valeurs p

Vérification d'hypothèses en Python

James Chapman

Curriculum Manager, DataCamp

Procès criminels

  • Deux états possibles en réalité :
    1. L'accusé a commis le crime
    2. L'accusé n'a pas commis le crime
  • Deux verdicts possibles :
    1. Coupable
    2. Non coupable
  • Au départ, on suppose l'accusé non coupable
  • La poursuite doit présenter une preuve « hors de tout doute raisonnable » pour un verdict de culpabilité
Vérification d'hypothèses en Python

Âge du premier contact avec la programmation

  • age_first_code_cut classe le moment où un utilisateur de Stack Overflow a commencé à programmer
    • "adult" : a commencé à 14 ans ou plus
    • "child" : a commencé avant 14 ans
  • Recherche antérieure : 35 % des développeurs ont commencé enfants
  • Indices qu'une plus grande proportion de data scientists ont commencé enfants ?
Vérification d'hypothèses en Python

Définitions

Une hypothèse est un énoncé sur un paramètre inconnu de la population

Un test d'hypothèse oppose deux hypothèses concurrentes

  • L'hypothèse nulle ($H_{0}$) est l'idée en place

  • L'hypothèse alternative ($H_{A}$) est la nouvelle idée « défendue » par le chercheur

Pour notre problème :

  • $H_{0}$ : La proportion de data scientists ayant commencé enfants est de 35 %
  • $H_{A}$ : La proportion de data scientists ayant commencé enfants est supérieure à 35 %
1 « Naught » est l'anglais britannique pour « zéro ». Pour des raisons historiques, « H-naught » est la convention internationale pour prononcer l'hypothèse nulle.
Vérification d'hypothèses en Python

Procès criminels vs tests d'hypothèse

  • Soit $H_{A}$, soit $H_{0}$ est vraie (pas les deux)
  • Au départ, on suppose $H_{0}$ vraie
  • Le test conclut par « rejeter $H_{0}$ » ou « ne pas rejeter $H_{0}$ »
  • Si les données fournissent une preuve « significative » en faveur de $H_{A}$, on rejette $H_{0}$, sinon on retient $H_{0}$

Le seuil de signification correspond au « hors de tout doute raisonnable » en test d'hypothèse

Vérification d'hypothèses en Python

Tests unilatéraux et bilatéraux

Courbe de densité de la loi normale standard avec les queues gauche et droite en rouge.

Les tests d'hypothèse vérifient si la statistique d'échantillon tombe dans les queues de la distribution nulle

Test Queues
alternative différente de la nulle bilatéral
alternative supérieure à la nulle unilatéral droit
alternative inférieure à la nulle unilatéral gauche

 

$H_{A}$ : La proportion de data scientists ayant commencé enfants est supérieure à 35 %

C'est un test unilatéral droit

Vérification d'hypothèses en Python

valeurs p

valeurs p : probabilité d'obtenir un résultat en supposant l'hypothèse nulle vraie

  • Grande valeur p : fort appui à $H_{0}$
    • Statistique probablement hors de la queue de la distribution nulle
  • Petite valeur p : forte preuve contre $H_{0}$
    • Statistique probablement dans la queue de la distribution nulle
  • Le « p » de valeur p → probabilité
  • « petite » signifie « proche de zéro »
Vérification d'hypothèses en Python

Calcul du score z

prop_child_samp = (stack_overflow['age_first_code_cut'] == "child").mean()
0.39141972578505085
prop_child_hyp = 0.35
std_error = np.std(first_code_boot_distn, ddof=1)
0.010351057228878566
z_score = (prop_child_samp - prop_child_hyp) / std_error
4.001497129152506
Vérification d'hypothèses en Python

Calcul de la valeur p

  • norm.cdf() est la FDR normale de scipy.stats.
  • Test unilatéral gauche → utiliser norm.cdf().
  • Test unilatéral droit → utiliser 1 - norm.cdf().

 

from scipy.stats import norm
1 - norm.cdf(z_score, loc=0, scale=1)
3.1471479512323874e-05
Vérification d'hypothèses en Python

Passons à la pratique !

Vérification d'hypothèses en Python

Preparing Video For Download...