two_sample_t_test_fl()

Changer de service à l’aide de la liste déroulante Version . En savoir plus sur la navigation.
S’applique à : ✅ Microsoft Fabric ✅ Azure Data Explorer

La fonction est une fonction two_sample_t_test_fl() définie par l’utilisateur (UDF) qui effectue le test T à deux exemples.

Remarque

Si l’hypothèse est que les deux jeux de données à comparer ont des variances différentes, nous vous suggérons d’utiliser la welch_test() native.

Prérequis

  • Le plug-in Python doit être activé sur le cluster. Cela est requis pour le Python inline utilisé dans la fonction.

Syntaxe

T | invoke two_sample_t_test_fl( data1 data2,,test_statistic,p_value equal_var,)

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
data1 string ✔️ Nom de la colonne contenant le premier jeu de données à utiliser pour le test.
data2 string ✔️ Nom de la colonne contenant le deuxième jeu de données à utiliser pour le test.
test_statistic string ✔️ Nom de la colonne à stocker la valeur des statistiques de test pour les résultats.
p_value string ✔️ Nom de la colonne à stocker p-value pour les résultats.
equal_var bool Si true (valeur par défaut), effectue un test indépendant standard de 2 échantillons qui suppose des variances de population égales. Si false, effectue le test t de Welch, qui ne suppose pas la variance de population égale. Comme mentionné ci-dessus, envisagez d’utiliser le welch_test() natif.

Définition de fonction

Vous pouvez définir la fonction en incorporant son code en tant que fonction définie par une requête ou en la créant en tant que fonction stockée dans votre base de données, comme suit :

Définissez la fonction à l’aide de l’instruction let suivante. Aucune autorisation n'est requise.

Important

Une instruction let ne peut pas s’exécuter par elle-même. Elle doit être suivie d’une instruction d’expression tabulaire. Pour exécuter un exemple de travail, consultez l’exempletwo_sample_t_test_fl().

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

Exemple

L’exemple suivant utilise l’opérateur Invoke pour exécuter la fonction.

Pour utiliser une fonction définie par une requête, appelez-la après la définition de la fonction incorporée.

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

Sortie

id sample1 sample2 test_stat p_val
Test #1 [23.64, 20.57, 20.42] [27.1, 22.12, 33.56] -1.7415675457565645 0.15655096653487446
Test n° 2 [20.85, 21.89, 23.41] [35.09, 30.02, 26.52], -3.2711673491022579 0.030755331219276136
Test #3 [20.13, 20.5, 21.7, 22.02] [32.2, 32.79, 33.9, 34.22] -18.5515946201742 1.5823717131966134E-06