CommencerCommencer gratuitement

Problème des comparaisons multiples

Le problème des comparaisons multiples survient lorsqu’un·e chercheur·se teste à répétition différentes variables/échantillons les uns contre les autres pour en vérifier la significativité. Par simple hasard, on s’attend à trouver occasionnellement un résultat statistiquement significatif.

Dans cet exercice, vous allez travailler sur des données de salaires des employé·e·s de la ville d’Austin (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. Une telle « significativité » serait évidemment fallacieuse, car des nombres aléatoires n’aident pas vraiment à expliquer quoi que ce soit !

Un DataFrame des salaires des agents de police (police_salaries_df) a été chargé pour vous, de même que les packages pandas sous pd, NumPy sous np, Matplotlib sous plt, et stats depuis SciPy.

Cet exercice fait partie du cours

Fondements de l’inférence en Python

Afficher le cours

Instructions

  • Stockez 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 p-valeur associée entre ces nombres générés aléatoirement et les salaires des policiers.
  • Si la p-valeur est significative à 5 %, ajoutez 1 à n_significant avec l’opérateur +=.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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