開始使用免費開始

1964 年《民權法案》的表決

1964 年的《民權法案》是美國史上最重要的立法之一。排除「到場」與「棄權」票後,眾議院中有 153 名民主黨與 136 名共和黨投下贊成票。不過,仍有 91 名民主黨與 35 名共和黨投下反對票。政黨歸屬是否影響了表決結果?

為了回答這個問題,你將評估這個假設:眾議員的政黨對其投票沒有影響。你會以民主黨投贊成的比例作為檢定統計量,並評估觀察到的民主黨贊成比例小於等於實際觀測值 153/244 的機率。(沒錯,是「小於等於」。在 1964 年,民主黨在民權議題上相對不那麼進步。)做法是將眾議員的政黨標籤隨機排列,接著任意分成「Democrats」與「Republicans」,並計算「Democrats」組中投下贊成的比例。

本練習屬於課程

Statistical Thinking in Python(第 2 部分)

檢視課程

練習說明

  • 建立布林陣列 demsreps 以包含兩黨的投票;例如,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)
編輯並執行程式碼