开始使用免费开始使用

1964 年《民权法案》的表决

1964 年的《民权法案》是美国通过的最重要立法之一。排除"到场"和"弃权"票后,众议院中有 153 名民主党人和 136 名共和党人投了赞成票(yea)。不过,也有 91 名民主党人和 35 名共和党人投了反对票(nay)。党派归属是否影响了投票结果?

为回答这个问题,您将检验这样的假设:众议员的党派与其投票无关。您将使用民主党人投赞成票的比例作为检验统计量,并评估观察到像 153/244 这样小的民主党赞成比例及以下的概率。(没错,是"至少这么小"。在 1964 年,民主党在民权议题上并不更进步。)为此,请对众议员的党派标签进行置换,然后将他们任意划分为"Democrats"和"Republicans",并计算其中"Democrats"投赞成票的比例。

本练习是课程的一部分

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)
编辑并运行代码