Sdílet prostřednictvím


mann_whitney_u_test_fl()

Funkce mann_whitney_u_test_fl() je UDF (uživatelem definovaná funkce), která provádí test Mann-Whitney U.

Požadavky

  • V clusteru musí být povolený modul plug-in Pythonu. To se vyžaduje pro vložený Python použitý ve funkci.
  • V databázi musí být povolený modul plug-in Pythonu. To se vyžaduje pro vložený Python použitý ve funkci.

Syntax

T | mann_whitney_u_test_fl(data1,data2,, test_statisticp_value [,use_continuity ])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
data1 string ✔️ Název sloupce obsahujícího první sadu dat, která se má použít pro test.
data2 string ✔️ Název sloupce obsahujícího druhou sadu dat, která se má použít pro test.
test_statistic string ✔️ Název sloupce pro uložení hodnoty testové statistiky pro výsledky.
p_value string ✔️ Název sloupce pro uložení p-hodnoty pro výsledky.
use_continuity bool Určuje, jestli je použita oprava kontinuity (1/2). Výchozí je true.

Definice funkce

Funkci můžete definovat tak, že buď vložíte její kód jako funkci definovanou dotazem, nebo ji vytvoříte jako uloženou funkci v databázi, a to následujícím způsobem:

Definujte funkci pomocí následujícího příkazu let. Nejsou vyžadována žádná oprávnění.

Důležité

Příkaz let nemůže běžet samostatně. Za ním musí následovat příkaz tabulkového výrazu. Pokud chcete spustit funkční příklad , mann_whitney_u_test_fl()podívejte se na příklad.

let mann_whitney_u_test_fl = (tbl:(*), data1:string, data2:string, test_statistic:string, p_value:string, use_continuity:bool=true)
{
    let kwargs = bag_pack('data1', data1, 'data2', data2, 'test_statistic', test_statistic, 'p_value', p_value, 'use_continuity', use_continuity);
    let code = ```if 1:
        from scipy import stats
        data1 = kargs["data1"]
        data2 = kargs["data2"]
        test_statistic = kargs["test_statistic"]
        p_value = kargs["p_value"]
        use_continuity = kargs["use_continuity"]
        def func(row):
            statistics = stats.mannwhitneyu(row[data1], row[data2], use_continuity=use_continuity)
            return statistics[0], statistics[1]
        result = df
        result[[test_statistic, p_value]]  = df.apply(func, axis=1, result_type = "expand")
        ```;
    tbl
    | evaluate python(typeof(*), code, kwargs)
};
// Write your query to use the function here.

Příklad

Následující příklad používá operátor invoke ke spuštění funkce.

Pokud chcete použít funkci definovanou dotazem, vyvoláte ji po definici vložené funkce.

let mann_whitney_u_test_fl = (tbl:(*), data1:string, data2:string, test_statistic:string, p_value:string, use_continuity:bool=true)
{
    let kwargs = bag_pack('data1', data1, 'data2', data2, 'test_statistic', test_statistic, 'p_value', p_value, 'use_continuity', use_continuity);
    let code = ```if 1:
        from scipy import stats
        data1 = kargs["data1"]
        data2 = kargs["data2"]
        test_statistic = kargs["test_statistic"]
        p_value = kargs["p_value"]
        use_continuity = kargs["use_continuity"]
        def func(row):
            statistics = stats.mannwhitneyu(row[data1], row[data2], use_continuity=use_continuity)
            return statistics[0], statistics[1]
        result = df
        result[[test_statistic, p_value]]  = df.apply(func, axis=1, result_type = "expand")
        ```;
    tbl
    | evaluate python(typeof(*), code, kwargs)
};
datatable(id:string, sample1:dynamic, sample2:dynamic) [
'Test #1', dynamic([23.64, 20.57, 20.42]), dynamic([27.1, 22.12, 33.56]),
'Test #2', dynamic([20.85, 21.89, 23.41]), dynamic([35.09, 30.02, 26.52]),
'Test #3', dynamic([20.13, 20.5, 21.7, 22.02]), dynamic([32.2, 32.79, 33.9, 34.22])
]
| extend test_stat= 0.0, p_val = 0.0
| invoke mann_whitney_u_test_fl('sample1', 'sample2', 'test_stat', 'p_val')

Výstup

id ukázka 1 ukázka 2 test_stat p_val
Test č. 1 [23.64, 20.57, 20.42] [27.1, 22.12, 33.56] 1 0.095215131912761986
Test č. 2 [20.85, 21.89, 23.41] [35.09, 30.02, 26.52] 0 0.04042779918502612
Test č. 3 [20.13, 20.5, 21.7, 22.02] [32.2, 32.79, 33.9, 34.22] 0 0.015191410988288745

Tato funkce není podporovaná.