Comment faire un F-test en python
Comment faire un test F pour vérifier si la variance est équivalente dans deux vecteurs en Python?
Par exemple si j'ai
a = [1,2,1,2,1,2,1,2,1,2]
b = [1,3,-1,2,1,5,-1,6,-1,2]
est-il quelque chose de similaire à
scipy.stats.ttest_ind(a, b)
j'ai trouvé
sp.stats.f(a, b)
Mais il semble être quelque chose de différent pour un F-test
3 réponses
la statistique d'essai F test for equal variances est simplement:
F = Var(X) / Var(Y)
Où F
est distribué comme df1 = len(X) - 1, df2 = len(Y) - 1
scipy.stats.f
que vous avez mentionné dans votre question a une méthode CDF. Cela signifie que vous pouvez générer une valeur p pour la statistique donnée et tester si cette valeur p est supérieure à votre niveau alpha choisi.
ainsi:
alpha = 0.05 #Or whatever you want your alpha to be.
p_value = scipy.stats.f.cdf(F, df1, df2)
if p_value > alpha:
# Reject the null hypothesis that Var(X) == Var(Y)
notez que le test F est extrêmement sensible à la non-normalité de X et Y, donc vous feriez probablement mieux de faire un test plus robuste comme test de Levene ou test de Bartlett sauf si vous êtes raisonnablement sûr que X et Y sont distribués normalement. Ces tests peuvent être trouvés dans le scipy
api:
sklearn.feature_selection.f_classif
ne ANOVA tests, etsklearn.feature_selection.f_regression
ne séquentielle des tests de régressions
Pour faire un one-way anova vous pouvez utiliser
import scipy.stats as stats
stats.f_oneway(a,b)
Anova à Sens Unique vérifie si la variance entre les groupes est plus grande que la variance à l'intérieur des groupes, et calcule la probabilité d'observer ce rapport de variance en utilisant la distribution de F -. Un bon tutoriel peut être trouvé ici: