Omröstningen om Civil Rights Act 1964
Civil Rights Act från 1964 var en av de viktigaste lagstiftningarna som någonsin antagits i USA. Exklusive "närvarande" och "avstår"-röster röstade 153 demokrater och 136 republikaner i representanthuset för. Däremot röstade 91 demokrater och 35 republikaner emot. Spelade partitillhörigheten någon roll för hur man röstade?
För att besvara den frågan utvärderar du hypotesen att en representants parti inte har någon inverkan på deras röst. Du använder andelen demokrater som röstade för som teststatistika och beräknar sannolikheten för att observera en andel demokrater som röstade för som är minst lika liten som den observerade andelen 153/244. (Just det – minst lika liten. År 1964 var det nämligen demokraterna som var mindre progressiva i medborgarrättsfrågorna.) För att göra detta permuterar du partietiketterna för representanthusets röstande och delar sedan in dem godtyckligt i "demokrater" och "republikaner", varefter du beräknar andelen demokrater som röstade ja.
Den här övningen är en del av kursen
Statistiskt tänkande i Python (del 2)
Övningsinstruktioner
- Skapa booleska arrayer,
demsochreps, som innehåller respektive partis röster – till exempel hardems153True-poster och 91False-poster. - Skriv en funktion,
frac_yea_dems(dems, reps), som returnerar andelen demokrater som röstade ja. Det första argumentet är en array av booleska värden. Två argument krävs för att använda dindraw_perm_reps()-funktion, men det andra används inte. - Använd din
draw_perm_reps()-funktion för att dra 10 000 permutationsreplikat av andelen ja-röster bland demokraterna. - Beräkna och skriv ut p-värdet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)