Le vote sur la Civil Rights Act en 1964
La Civil Rights Act de 1964 est l'une des lois les plus importantes jamais adoptées aux États‑Unis. En excluant les votes « present » et les abstentions, 153 démocrates à la Chambre et 136 républicains ont voté « yea ». Toutefois, 91 démocrates et 35 républicains ont voté « nay ». L'appartenance à un parti a‑t‑elle influé sur le vote?
Pour répondre à cette question, vous allez évaluer l'hypothèse selon laquelle le parti d'un membre de la Chambre n'a aucune incidence sur son vote. Vous utiliserez la fraction de démocrates ayant voté en faveur comme statistique de test et évaluerez la probabilité d'observer une fraction de démocrates en faveur au moins aussi petite que la fraction observée de 153/244. (Oui, au moins aussi petite. En 1964, ce sont les démocrates qui étaient moins progressistes sur les questions de droits civiques.) Pour ce faire, permutez les étiquettes de parti des votants de la Chambre, puis répartissez‑les arbitrairement en « Democrats » et « Republicans », et calculez la fraction de démocrates ayant voté « yea ».
Cette activité fait partie du cours
Réflexion statistique en Python (partie 2)
Instructions de l’exercice
- Construisez des tableaux booléens,
demsetreps, qui contiennent les votes des partis respectifs; p. ex.,demscomporte 153 entréesTrueet 91 entréesFalse. - Écrivez une fonction
frac_yea_dems(dems, reps)qui renvoie la fraction de démocrates ayant voté « yea ». La première entrée est un tableau booléen. Deux entrées sont requises pour utiliser votre fonctiondraw_perm_reps(), mais la deuxième n'est pas utilisée. - Utilisez votre fonction
draw_perm_reps()pour générer 10 000 réplicats par permutation de la fraction de votes « yea » chez les démocrates. - Calculez et affichez la valeur p.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Construct arrays of data: dems, reps
dems = np.array([True] * 153 + [False] * 91)
reps = ____
def frac_yea_dems(dems, reps):
"""Compute fraction of Democrat yea votes."""
frac = ____ / ____
return frac
# Acquire permutation samples: perm_replicates
perm_replicates = ____(____, ____, frac_yea_dems, ____)
# Compute and print p-value: p
p = np.sum(____ <= 153/244) / len(____)
print('p-value =', p)