CommencezCommencez gratuitement

Problème des comparaisons multiples

Le problème des comparaisons multiples survient lorsqu'une personne chercheuse vérifie à répétition différentes variables/échantillons les unes par rapport aux autres pour en tester la signification statistique. Par pur hasard, on s'attend à trouver à l'occasion un résultat statistiquement significatif.

Dans cet exercice, vous allez travailler avec des données sur les salaires des employé·e·s de la ville d'Austin, au Texas. Vous comparerez leurs salaires à des données générées aléatoirement. Vous verrez à quelle fréquence ces données aléatoires sont « significatives » pour expliquer les salaires des employé·e·s. De toute évidence, une telle « signification » serait fallacieuse, puisque des nombres aléatoires n'aident pas vraiment à expliquer quoi que ce soit !

Un DataFrame des salaires des policières et policiers (police_salaries_df) a été chargé pour vous, de même que les modules pandas sous pd, NumPy sous np, Matplotlib sous plt, et stats de SciPy.

Cette activité fait partie du cours

Fondements de l'inférence en Python

Voir le cours

Instructions de l’exercice

  • Enregistrez le nombre de personnes dans l'ensemble de données dans n_rows (chaque ligne correspond à une personne), et initialisez le nombre de résultats significatifs, n_significant, à zéro.
  • Écrivez une boucle for qui s'exécute 1000 fois et génère n_rows nombres aléatoires.
  • Calculez le R de Pearson et la valeur p associée entre ces nombres générés aléatoirement et les salaires des policières et policiers.
  • Si la valeur p est significative à 5 %, ajoutez un à n_significant à l'aide de l'opérateur +=.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Compute number of rows and initialize n_significant
n_rows = ____
n_significant = ____

# For loop which generates n_rows random numbers 1000 times
for i in ____:
  random_nums = np.random.uniform(size=____)
  # Compute correlation between random_nums and police salaries
  r, p_value = stats.____(____, random_nums)
  # If the p-value is significant at 5%, increment n_significant
  if ____ < ____:
    ____ += 1
    
print(n_significant)
Modifier et exécuter le code