始める無料で始める

1964年公民権法の採決

1964年の公民権法は、米国で可決された中でも最も重要な法律の一つです。「出席(present)」と「棄権(abstain)」を除くと、下院では民主党153名と共和党136名が賛成票を投じました。一方で、民主党91名と共和党35名が反対しました。党派は投票行動に影響したのでしょうか?

この問いに答えるために、下院議員の党派が投票に影響しないという仮説を評価します。検定統計量として民主党の賛成割合を用い、観測された 153/244 と同じかそれ以下の民主党賛成割合が得られる確率を評価します。(そうです、「以下」です。1964年当時、公民権問題では民主党のほうが相対的に保守的でした。)そのために、まず下院議員の党派ラベルを置換してから、便宜的に「Democrats」と「Republicans」に分け、民主党の賛成割合を計算します。

この演習はコースの一部です

Pythonで学ぶ統計思考(パート2)

コースを見る

演習の手順

  • それぞれの党の投票を含むブール配列 demsreps を作成します。例:demsTrue が153個、False が91個です。
  • 関数 frac_yea_dems(dems, reps) を作成し、民主党の賛成割合を返すようにします。最初の入力はブール配列です。draw_perm_reps() を使うために2つの入力を受け取りますが、2つ目は使用しません。
  • 作成した 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)
コードを編集して実行