Tests de proportion à un seul échantillon

Vérification d'hypothèses en Python

James Chapman

Curriculum Manager, DataCamp

Récapitulatif du chapitre 1

  • Une affirmation sur une proportion populationnelle inconnue est-elle plausible?

 

  1. Erreur-type de la statistique d'échantillon à partir de la distribution bootstrap
  2. Calculer une statistique de test standardisée
  3. Calculer une valeur p
  4. Choisir l'hypothèse la plus plausible

 

  • Maintenant, calculez la statistique de test sans utiliser la distribution bootstrap
Vérification d'hypothèses en Python

Statistique de test standardisée pour des proportions

$p$ : proportion populationnelle (paramètre inconnu)

$\hat{p}$ : proportion d'échantillon (statistique d'échantillon)

$p_{0}$ : proportion populationnelle supposée

$$ z = \frac{\hat{p} - \text{mean}(\hat{p})}{\text{SE}(\hat{p})} = \frac{\hat{p} - p}{\text{SE}(\hat{p})} $$

En supposant que $H_{0}$ est vraie, $p = p_{0}$, donc

$$ z = \dfrac{\hat{p} - p_{0}}{\text{SE}(\hat{p})} $$

Vérification d'hypothèses en Python

Simplifier le calcul de l'erreur-type

$SE_{\hat{p}} = \sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}$ $\rightarrow$ Sous $H_0$, $SE_{\hat{p}}$ dépend de $p_0$ supposé et de la taille d'échantillon $n$

En supposant que $H_{0}$ est vraie,

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

  • Utilise seulement l'échantillon ($\hat{p}$ et $n$) et le paramètre supposé ($p_{0}$)
Vérification d'hypothèses en Python

Pourquoi z et non t?

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}{\sqrt{\dfrac{s_{\text{child}}^2}{n_{\text{child}}} + \dfrac{s_{\text{adult}}^2}{n_{\text{adult}}}}}$

  • $s$ est calculé à partir de $\bar{x}$
    • $\bar{x}$ estime la moyenne populationnelle
    • $s$ estime l'écart-type populationnel
    • $\uparrow$ incertitude de l'estimation du paramètre
  • Distribution t : queues plus épaisses qu'une normale
  • $\hat{p}$ n'apparaît qu'au numérateur, donc les scores z conviennent
Vérification d'hypothèses en Python

Catégories d'âge sur Stack Overflow

$H_{0}$ : Proportion d'utilisateurs de Stack Overflow de moins de trente ans $=0,5$

$H_{A}$ : Proportion d'utilisateurs de Stack Overflow de moins de trente ans $\neq0,5$

alpha = 0.01
stack_overflow['age_cat'].value_counts(normalize=True)
Under 30       0.535604
At least 30    0.464396
Name: age_cat, dtype: float64
Vérification d'hypothèses en Python

Variables pour z

p_hat = (stack_overflow['age_cat'] == 'Under 30').mean()
0.5356037151702786
p_0 = 0.50
n = len(stack_overflow)
2261
Vérification d'hypothèses en Python

Calcul du score z

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

import numpy as np
numerator = p_hat - p_0
denominator = np.sqrt(p_0 * (1 - p_0) / n)
z_score = numerator / denominator
3.385911440783663
Vérification d'hypothèses en Python

Calcul de la valeur p

Fonction de répartition (CDF) de la loi normale. La portion inférieure à -2 est en rouge et celle supérieure à 2 est en vert. Unilatéral à gauche (« plus petit que ») :

from scipy.stats import norm
p_value = norm.cdf(z_score)

Unilatéral à droite (« plus grand que ») :

p_value = 1 - norm.cdf(z_score)

Bilatéral (« différent de ») :

p_value = norm.cdf(-z_score) + 
  1 - norm.cdf(z_score)
p_value = 2 * (1 - norm.cdf(z_score))
0.0007094227368100725
p_value <= alpha
True
Vérification d'hypothèses en Python

Passons à la pratique !

Vérification d'hypothèses en Python

Preparing Video For Download...