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
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
forqui s'exécute 1000 fois et génèren_rowsnombres 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)