1964 年《民权法案》的表决
1964 年的《民权法案》是美国通过的最重要立法之一。排除"到场"和"弃权"票后,众议院中有 153 名民主党人和 136 名共和党人投了赞成票(yea)。不过,也有 91 名民主党人和 35 名共和党人投了反对票(nay)。党派归属是否影响了投票结果?
为回答这个问题,您将检验这样的假设:众议员的党派与其投票无关。您将使用民主党人投赞成票的比例作为检验统计量,并评估观察到像 153/244 这样小的民主党赞成比例及以下的概率。(没错,是"至少这么小"。在 1964 年,民主党在民权议题上并不更进步。)为此,请对众议员的党派标签进行置换,然后将他们任意划分为"Democrats"和"Republicans",并计算其中"Democrats"投赞成票的比例。
本练习是课程的一部分
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)