Delen via


mann_whitney_u_test_fl()

De functie mann_whitney_u_test_fl() is een UDF (door de gebruiker gedefinieerde functie) die de Mann-Whitney U-test uitvoert.

Vereisten

  • De Python-invoegtoepassing moet zijn ingeschakeld op het cluster. Dit is vereist voor de inline Python die in de functie wordt gebruikt.

Syntax

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

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
data1 string ✔️ De naam van de kolom met de eerste set gegevens die voor de test moet worden gebruikt.
data2 string ✔️ De naam van de kolom met de tweede set gegevens die voor de test moet worden gebruikt.
test_statistic string ✔️ De naam van de kolom voor het opslaan van de teststatistiekwaarde voor de resultaten.
p_value string ✔️ De naam van de kolom voor het opslaan van p-waarde voor de resultaten.
use_continuity bool Bepaalt of een continuïteitscorrectie (1/2) wordt toegepast. De standaardinstelling is true.

Functiedefinitie

U kunt de functie als volgt definiëren door de code in te sluiten als een door een query gedefinieerde functie of door deze te maken als een opgeslagen functie in uw database:

Definieer de functie met behulp van de volgende let-instructie. Er zijn geen machtigingen vereist.

Belangrijk

Een let-instructie kan niet zelfstandig worden uitgevoerd. Deze moet worden gevolgd door een tabellaire expressie-instructie. Zie Voorbeeld als u een werkend voorbeeld van mann_whitney_u_test_fl()wilt uitvoeren.

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.

Voorbeeld

In het volgende voorbeeld wordt de operator aanroepen gebruikt om de functie uit te voeren.

Als u een querygedefinieerde functie wilt gebruiken, roept u deze aan na de definitie van de ingesloten functie.

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')

Uitvoer

id voorbeeld1 voorbeeld2 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

Deze functie wordt niet ondersteund.