Inférences fréquentistes

Test statistique

Tests

Il existe différents tests possibles, à choisir selon le type des données (qualitatives ou quantitatives) et leur distribution (normale, binomiale, poisson, etc). On trouve notamment:

Table d’utilisation des tests statistiques

python
# 1 sample T-test
from scipy.stats import ttest_1samp
stats,p = ttest_1samp(df[df['Gender'] == 'F'].MonthlyIncome.mean(), df.MonthlyIncome.mean())

print("p-value:", p)
print("reject H0:", p<0.05)
# 2 sample paired T-test
from scipy.stats import ttest_rel
stats,p = ttest_rel(df.before.mean(), df.after.mean())
# 2 sample T-test
from scipy.stats import ttest_ind
stats,p = ttest_rel(df[df['Athlete'] == 1].mean(), df[df['Athlete'] == 0].mean())
# wilcoxon-sign test
from scipy.stats import wilcoxon
stats,p = wilcoxon(df.before, df.after)
# friedman Test
from scipy.stats import friedmanchisquare
stats,p = friedmanchisquare(df.before, df.week1, df.week2)
# mann-whitney test
from scipy.stats import mannwhitneyu
stats,p = mannwhitneyu(
    df[df['EducationField'] == 'Medical'].TrainingTimesLastYear,
    df[df['EducationField'] != 'Medical'].TrainingTimesLastYear)
# kruskal-walls test
from scipy.stats import kruskal
stats,p = kruskal(
    df[df.MaritalStatus == 'Married'].JobLevel,
    df[df.MaritalStatus == 'Single'].JobLevel,
    df[df.MaritalStatus == 'Divorced'].JobLevel)
# chi-square test
from scipy.stats import chi2_contingency
chitable = pd.crosstab(df.MaritalStatus,df.BusinessTravel)
stats,p,dof,expected = chi2_contingency(chitable)
# one-way anova
import statsmodels.api as sm
from statsmodels.formula.api import ols

model  = ols('Sales~C(Promotion)', df).fit()
oneway = sm.stats.anova_lm(model, typ=2)
print(oneway)

'''
ols  : ordinary least square
sales: dependant variables
C    : independant (categorical) variable
'''
# two-way anova
model  = ols('Sales~C(Promotion)+C(Coupon)', df).fit()
twoway = sm.stats.anova_lm(model, typ=2)
print(twoway)
# ancova
model  = ols('Sales~C(Promotion)+C(Coupon)+ClietelRatings', df).fit()
ancova = sm.stats.anova_lm(model,typ=2)
print(ancova)

Seuil de significativité

Le seuil de significativité (significance level en anglais), aussi appelé risque de premier degré (type I error), est le risque qu’on est prêt à accepter de faussement rejeter l’hypothèse nulle. Autrement dit, d’affirmer qu’il serait absurde de considérer que les résultats obtenus sont dûs au hasard alors que c’est le cas — et donc de dire qu’il existe une véritable différence entre les échantillons alors que ce n’est pas le cas.

\[\alpha = P(\text{rejeter } H_0 | H_0 \text{ vrai})\]

Le seuil de significativité est une probabilité (une valeur entre 0 et 1) et on le note α (alpha).
α = 0.05 indique qu’on accepte un risque de 5% (5 fois sur 100) de conclure à une différence alors qu’en vérité il n’y en a pas. On peut choisir un risque plus bas, typiquement en médicine on prendra 1%, mais choisir un risque plus grand serait accompagné d’une telle incertitude qu’il serait déraisonnable de s’y fier.


Puissance d’un test


Intervalle de confiance


Degrés de liberté

Les tests statistiques T test, F test et chi-2 nécessitent de connaître le degré de liberté des données (degree of freedom en anglais), c’est à dire le nombre de variables pouvant librement varier, pour déterminer la valeur critique à utiliser.


Effectuer un test statistique

  1. Formuler vos hypothèses
    Le magazine X affirme que le coût moyen d’une chambre d’hôtel à New York est de 168$ par nuit. Pour déterminer si c’est vrai, vous avez pris au hasard 25 hôtels et obtenu un moyenne de 172,50$ avec un écart-type de 15,40$. Une moyenne de 168$ est-elle vraissemblable?

    H0: Pas d'effet remarqué, on peut dire que μ = 168
    H1: On remarque une différence significative, on peut dire que μ ≠ 168
    
  2. Sélectionner le test statistique approprié
    1 sample T-Test (bilatéral)
  3. Choisir le seuil de significativité
    α = 0.05
  4. Calculer le degré de liberté (si nécessaire) et les valeurs critiques

    ddl = 25-1 = 24
    z   = ttable(bilateral 0.05, ddl 24) = 2.064
    
  5. Calculer le test statistique

    T test = (X - μ)/(S/√n)
           = (172.5-168)/(15.4/√25)
           = 4.5/3.08
           = 1.46
    
  6. Comparer la valeur calculées et les valeurs critiques, conclure

    -2.064 < 1.45 < 2.064
    
    1.46 est dans l'intervalle de confiance  
    Conclusion: on ne peut pas rejeter H0  
    Rien ne prouve que la moyenne est différente de 168$,
    μ = 168 est une moyenne vraissemblable
    

Le petit p

Pour aller plus loin: Hypothesis tests with Python


Les limites des tests statistiques

  1. Le petit p ne donne pas la probabilité que l’hypothèse nulle soit vraie ou fausse, mais la probabilité de pouvoir reproduire les résultats obtenus.

    Ex: Un petit p de 0.02 n’indique pas qu’il y a 2% de chances que l’hypothèse nulle soit vraie (ce serait comme dire “en partant du principe que l’herbe est verte, quelle est la probabilité que l’herbe soit verte?”). Le petit p indique qu’on s’attend à ce que 2% des études menées à l’identique produisent une différence au moins aussi importante que celle observée si l’hypothèse nulle est vraie.

  2. Les tests statistiques reposent sur la supposition que les tests seront répétés, mais bien souvent ils ne le sont pas, ce qui nous mène à conclure à tort à des différences qui n’existent pas ou à l’absence de preuve.

    Ex: On pense que le temps de réaction des joueurs d’échec professionels plus âgés est différent du temps de réaction des joueurs d’échec plus jeunes. Même s’il n’y avait aucune différence entre les deux, et qu’on répétait cette étude à l’infini, en utilisant un alpha de 0.05 on rejeterai l’hypothèse nulle 5% des cas.

  3. On ne peut pas prouver l’hypothèse nulle. On veut parfois prouver qu’il n’y a pas d’effet entre deux éléments, mais les tests statistiques ne nous permettent que de conclure qu’il n’y a pas de preuve de l’existence d’une relation entre les deux.

  4. Si on rejette l’hypothèse nulle, on a malgré tout très peu d’information sur l’alternative. Est-ce une différence importante ou minime?

Pour faire face à ces limites, on peut utiliser les inférences bayesiennes.