1964 年《民權法案》的表決
1964 年的《民權法案》是美國史上最重要的立法之一。排除「到場」與「棄權」票後,眾議院中有 153 名民主黨與 136 名共和黨投下贊成票。不過,仍有 91 名民主黨與 35 名共和黨投下反對票。政黨歸屬是否影響了表決結果?
為了回答這個問題,你將評估這個假設:眾議員的政黨對其投票沒有影響。你會以民主黨投贊成的比例作為檢定統計量,並評估觀察到的民主黨贊成比例小於等於實際觀測值 153/244 的機率。(沒錯,是「小於等於」。在 1964 年,民主黨在民權議題上相對不那麼進步。)做法是將眾議員的政黨標籤隨機排列,接著任意分成「Democrats」與「Republicans」,並計算「Democrats」組中投下贊成的比例。
本練習屬於課程
Statistical Thinking in Python(第 2 部分)
練習說明
- 建立布林陣列
dems與reps以包含兩黨的投票;例如,dems應有 153 個True與 91 個False。 - 撰寫函式
frac_yea_dems(dems, reps),回傳民主黨贊成的比例。第一個輸入是布林陣列。你的draw_perm_reps()需要兩個輸入,不過第二個不會用到。 - 使用你的
draw_perm_reps()來抽取 10,000 個民主黨贊成比例的排列複本。 - 計算並印出 p 值。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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)