Il voto sul Civil Rights Act del 1964
Il Civil Rights Act del 1964 è stata una delle leggi più importanti mai approvate negli USA. Escludendo i voti "present" e "abstain", 153 Democratici della Camera e 136 Repubblicani votarono favorevoli (yea). Tuttavia, 91 Democratici e 35 Repubblicani votarono contrari (nay). L’affiliazione politica ha influito sull’esito del voto?
Per rispondere, valuterai l’ipotesi che il partito di un membro della Camera non abbia alcuna influenza sul suo voto. Userai come statistica di test la frazione di Democratici che hanno votato a favore e valuterai la probabilità di osservare una frazione di Democratici favorevoli almeno piccola quanto la frazione osservata di 153/244. (Esatto, almeno così piccola. Nel 1964 erano i Democratici a essere meno progressisti sulle questioni dei diritti civili.) Per farlo, permuta le etichette di partito dei votanti della Camera, poi dividili arbitrariamente in "Democrats" e "Republicans" e calcola la frazione di Democratici che votano yea.
Questo esercizio fa parte del corso
Pensiero statistico in Python (Parte 2)
Istruzioni dell'esercizio
- Crea gli array booleani
demserepsche contengono i voti dei rispettivi partiti; ad esempio,demsha 153 valoriTruee 91 valoriFalse. - Scrivi una funzione
frac_yea_dems(dems, reps)che restituisca la frazione di Democratici che hanno votato yea. Il primo argomento è un array di booleani. Sono richiesti due argomenti per usare la tua funzionedraw_perm_reps(), ma il secondo non viene usato. - Usa la tua funzione
draw_perm_reps()per generare 10.000 repliche di permutazione della frazione di voti favorevoli dei Democratici. - Calcola e stampa il p-value.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)