> Modules non standards > statsmodels > t-test et test de Fisher
t-test et test de Fisher
t-test :
- import statsmodels.stats.weightstats; comp = statsmodels.stats.weightstats.CompareMeans.from_data([2, 4, 5, 6], [10, 9, 5, 8, 11]); (t, p, df) = comp.ttest_ind()) : renvoie la statistique t, la p-value et le nombre de degrés de liberté.
- paramètres de ttest_ind :
- usevar = 'pooled' : suppose que les variances des 2 samples sont les mêmes (défaut), usevar = 'unequal' : suppose les variances différentes.
- alternative = 'two-sided' : test dans les sens (défaut), alternative = 'smaller' ou alternative = 'larger' : test d'un seul côté (quand c'est larger, on teste l'hypothèse que la différence entre le premier vecteur et le second est plus petite que la valeur donnée (qui vaut 0 par défaut), et donc H1 est que le premier vecteur - le second vecteur est plus grand que la valeur donnée.
- value = 2 : teste H0 avec par exemple v1 - v2 = 2 (si two-sided ici).
- on peut avoir un intervalle de confiance : (lower, upper) = comp.tconfint_diff(alpha = 0.02, usevar = 'unequal'). Paramètres :
- uservar = 'pooled' : suppose que les variances des 2 samples sont les mêmes (défaut), uservar = 'unequal' : suppose les variances différentes.
- alpha = 0.01 : niveau de confiance (défaut est 0.05)
- alternative = 'two-sided' (défaut), 'larger', 'smaller' (si larger ou smaller, l'intervalle est infini d'un côté)
- comp.summary(alpha = 0.02, usevar = 'unequal') : renvoie une SimpleTable.
- si df1 et df2 sont des dataframes avec le même nombre de lignes : statsmodels.stats.weightstats.CompareMeans.from_data(df1.T, df2.T) compare par ligne la moyenne de df1 et la moyenne de df2. Alors (t, p, df) = comp.ttest_ind()) renvoie un triplet où t et p sont des séries.
TOST (two on-sided test) :
- le principe est le même que le t-test (ce sont en fait 2 t-test one-sided) :
comp = statsmodels.stats.weightstats.CompareMeans.from_data([2, 4, 5, 6], [10, 9, 5, 8, 11])
(p, ((t1, p1, df1), (t2, p2, df2))) = comp.ttost_ind(usevar = 'unequal', low = -minDiff, upp = maxDiff)
- renvoie la p-value globale, et une paire avec les résultats du test "larger" et les résultats du test smaller.
- la p-value est la valeur maximale des p-values des 2 tests.
Puissance d'un t-test :
- connaissant la déviation standard d'une mesure, on peut trouver la puissance statistique donnée pour une différence de moyennes données et un effectif donné.
- import statsmodels.stats.power; power = statsmodels.stats.power.TTestIndPower(); power.power(effectSize, n1, alpha = 0.05, ratio = 1) : renvoie la puissance statistique (probabilité de ne pas faire une erreur de type II)
- effectSize : c'est la différence des moyennes divisée par la déviation standard.
- n1 : nombre d'observation pour l'échantillon 1
- alpha : niveau de signification (probabilité d'une erreur de type I)
- ratio : pour l'échantillon 2, on a ratio * n1 observations.
- on peut aussi donner alternative = "two-sided", "larger" ou "smaller" (défaut est "two-sided")
Recherche d'un paramètre quelconque :
- power.solve_power(effectSize = None, nobs1 = None, alpha = None, power = None, ratio = 1, alternative = "two-sided") : un seul des paramètres doit être à None et tous les autres renseignés. Renvoie le paramètre à None (non renseigné).
Test de Fisher exact :
- import scipy.stats
- (oddsratio, pvalue) = scipy.stats.fisher_exact([[1, 99], [8, 92]]) : on donne le tableau de contingence.
- on peut rajouter le paramètre alternative = "less" (ou greater). Le défaut est "two-sided".
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert