Udostępnij za pośrednictwem


ks_test_fl()

Funkcja ks_test_fl() jest funkcją UDF (zdefiniowaną przez użytkownika), która wykonuje test Kolmogorov Smirnov.

Wymagania wstępne

  • Wtyczka języka Python musi być włączona w klastrze. Jest to wymagane dla wbudowanego języka Python używanego w funkcji.
  • Wtyczka języka Python musi być włączona w bazie danych. Jest to wymagane dla wbudowanego języka Python używanego w funkcji.

Składnia

T | invoke ks_test_fl(data1,data2,, test_statisticp_value)

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
data1 string ✔️ Nazwa kolumny zawierającej pierwszy zestaw danych do użycia na potrzeby testu.
data2 string ✔️ Nazwa kolumny zawierającej drugi zestaw danych do użycia na potrzeby testu.
test_statistic string ✔️ Nazwa kolumny do przechowywania wartości statystyk testowych dla wyników.
p_value string ✔️ Nazwa kolumny do przechowywania wartości p dla wyników.

Definicja funkcji

Funkcję można zdefiniować, osadzając kod jako funkcję zdefiniowaną przez zapytanie lub tworząc ją jako funkcję przechowywaną w bazie danych w następujący sposób:

Zdefiniuj funkcję przy użyciu następującej instrukcji let. Nie są wymagane żadne uprawnienia.

Ważne

Instrukcja let nie może być uruchamiana samodzielnie. Należy po nim wykonać instrukcję wyrażenia tabelarycznego. Aby uruchomić działający przykład programu ks_test_fl(), zobacz Przykład.

let ks_test_fl = (tbl:(*), data1:string, data2:string, test_statistic:string, p_value:string)
{
    let kwargs = bag_pack('data1', data1, 'data2', data2, 'test_statistic', test_statistic, 'p_value', p_value);
    let code = ```if 1:
        from scipy import stats
        data1 = kargs["data1"]
        data2 = kargs["data2"]
        test_statistic = kargs["test_statistic"]
        p_value = kargs["p_value"]
        def func(row):
            statistics = stats.ks_2samp(row[data1], row[data2])
            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.

Przykład

W poniższym przykładzie użyto operatora invoke do uruchomienia funkcji.

Aby użyć funkcji zdefiniowanej przez zapytanie, wywołaj ją po osadzonej definicji funkcji.

let ks_test_fl = (tbl:(*), data1:string, data2:string, test_statistic:string, p_value:string)
{
    let kwargs = bag_pack('data1', data1, 'data2', data2, 'test_statistic', test_statistic, 'p_value', p_value);
    let code = ```if 1:
        from scipy import stats
        data1 = kargs["data1"]
        data2 = kargs["data2"]
        test_statistic = kargs["test_statistic"]
        p_value = kargs["p_value"]
        def func(row):
            statistics = stats.ks_2samp(row[data1], row[data2])
            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 ks_test_fl('sample1', 'sample2', 'test_stat', 'p_val')

Dane wyjściowe

identyfikator sample1 sample2 test_stat p_val
Test nr 1 [23.64, 20.57, 20.42] [27.1, 22.12, 33.56] 0.66666666666666674 0.3197243332709643
Test nr 2 [20.85, 21.89, 23.41] [35.09, 30.02, 26.52] 1 0.03262165165202116
Test nr 3 [20.13, 20.5, 21.7, 22.02] [32.2, 32.79, 33.9, 34.22] 1 0.01106563701580386

Ta funkcja nie jest obsługiwana.