提交 fe73380f 编写于 作者: W wizardforcel

ch10

上级 f5e26e11
......@@ -8,7 +8,7 @@
我们是否回答这些问题取决于我们的数据。加州的人口普查数据可以解决人口统计的问题,而答案几乎没有任何不确定性。我们知道 Broad Street 水泵的水源受到霍乱病人的污染,所以我们可以很好地猜测它是否会引起霍乱。
巧克力还是其他任何实验对有好处,几乎肯定要由医学专家来决定,但是第一步是使用数据科学分析来自研究和随机实验的数据。
巧克力还是其他任何实验对有好处,几乎肯定要由医学专家来决定,但是第一步是使用数据科学分析来自研究和随机实验的数据。
在本章中,我们将试图回答这样的问题,根据样本和经验分布的结论。我们将以北加利福尼亚州公民自由联盟(ACLU)2010 年进行的一项研究为例。
......@@ -418,7 +418,7 @@ abs(proportion_purple - 0.75)
0.016953713670613602
```
检验统计量的经验分布,在原假设为真的情况下。 毫不奇怪,我们得到的值与我们观察到的统计量之间的差约为 0.00888。 但是如果我们又取了一个样本,会有多大的不同呢? 可以通过重新运行上面的两个单元格来回答这个问题,或者使用`for`循环来模拟统计量。
检验统计量的经验分布,在原假设为真的情况下。 毫不奇怪,我们得到的值与我们观察到的统计量之间的差约为 0.00888。 但是如果我们又取了一个样本,会有多大的不同呢? 可以通过重新运行上面的两个单元格来回答这个问题,或者使用`for`循环来模拟统计量。
```py
repetitions = 5000
......@@ -802,7 +802,7 @@ results.hist(bins = np.arange(0, 45, 5))
上面的例子是一个普遍事实的特例:
如果对 P 值使用`p%`的截断值,并且原假设恰好是真的,那么大约有`p%`的概率,的检验就会得出结论:备选假设是正确的。
如果对 P 值使用`p%`的截断值,并且原假设恰好是真的,那么大约有`p%`的概率,的检验就会得出结论:备选假设是正确的。
因此,1% 的截断值比 5% 更保守 - 如果原假设恰好是真的,那么结论为“备选假设”的可能性就会降低。出于这个原因,医学治疗随机对照试验通常使用 1% 作为决定以下两个假设之间的临界值:
......@@ -812,7 +812,7 @@ results.hist(bins = np.arange(0, 45, 5))
这个想法是,控制结论为实验有效,而实际上无效的几率。这减少了给予患者无效治疗的风险。
尽管如此,即使将截断值设置为 1% 那样低,并且实验没有任何效果,但有大约 1% 的几率得出结论:实验是有效的。这由于机会变异。来自随机样本的数据很可能最终导致你误入歧途。
尽管如此,即使将截断值设置为 1% 那样低,并且实验没有任何效果,但有大约 1% 的几率得出结论:实验是有效的。这由于机会变异。来自随机样本的数据很可能最终导致你误入歧途。
### 数据窥探
......@@ -825,3 +825,279 @@ results.hist(bins = np.arange(0, 45, 5))
如果研究人员在找到给出“高度统计学显著”的结论之前,进行了多个不同的检验,请谨慎使用结果。这项研究可能会受到数据窥探的影响,这实际上意味着将数据捏造成一个假象。
在这种情况下,验证报告结果的一种方法是,复制实验并单独检验该特定效果。如果它再次表现为显著,就验证了原来的结论。
### 技术注解:其他类型的错误
当然,还有另外一种错误:认为治疗什么也不做,事实上它做了一些事情。近似这个错误超出了本节的范围。要知道,如果你建立你的测试来减少两个错误之一,你几乎总是增加另一个。
### 技术注解:识别拒绝域
在上面的硬币投掷的例子中,我们基于 400 次投掷,使用 P 值的 3.5 倍的截断值来测试硬币的平等性。检验统计量是 ![](http://latex.codecogs.com/gif.latex?%7C%5Cmbox%7Bnumber%20of%20heads%7D%20-%20200%7C)。我们在平等的原假设下模拟了这个统计量。
由于所有统计数据的前 3.5%,检验的结论是硬币是不平等的,在下面展示为红色。
从图中可以看出,在平等的原假设下,大约前 3.5% 的检验统计量的值大于 20。你也可以通过求出这些值的比例来确认:
```py
results.where('|Number of Heads - 200|', are.above_or_equal_to(21)).num_rows/results.num_rows
0.0372
```
也就是说,如果检验统计量是 21 或更高,那么以 3.5% 的截断点,你会得出结论:硬币是不公平的。
也就是说,如果检验统计量是 21 或更大,你将拒绝原假设。因此,“21 以上”的范围被称为该检验的拒绝域。它对应的正面数量是 221 及以上,或者是 179 及以下。
如果你没有在直方图上将其标记为红色,你将如何找到这些值?百分位数函数在这里派上用场。它需要你尝试查找的百分比水平以及包含数据的数组。统计量的“前 3.5%”对应于统计量的第 96.5 个百分点:
```py
percentile(96.5, results.column(0))
21.0
```
注意。由于“重复”(即数据中的几个相同的值)和数据数组的任意长度,百分位数并不总是那么整齐。在本课程的后面,我们将给出一个涵盖所有情况的百分位数的精确定义。就目前而言,只要认为`percentile `函数返回一个答案,与你直觉上看做百分点的东西相近即可。
## 示例:漏风门
2015 年 1 月 18 日,印第安纳波利斯小马队(Indianapolis Colts)和新英格兰爱国者队(New England Patriots)进行了美式橄榄球大会(AFC)冠军赛,来确定哪支球队将晋级超级碗(Super Bowl)。比赛结束后,有人指责爱国者的橄榄球没有按照规定的要求膨胀,并且更软。这可能是一个优势,因为较软的球可能更容易被捕获。
几个星期以来,美国橄榄球界充满了指责,否认,理论和怀疑:在 20 世纪 70 年代水门事件的政治丑闻之后,新闻界标记了“漏风门”这个话题。国家橄榄球联盟(NFL)委托了独立分析小组。在这个例子中,我们将执行我们自己的数据分析。
压强通常以磅/平方英寸(psi)来衡量。 NFL 规则规定了比赛用球必须充气为 12.5psi 到 13.5psi 的压强。每个队都拥有 12 个球。球队有责任保持自己的球的压强,但比赛官方会检查球。在 AFC 比赛开始之前,所有爱国者的球都在 12.5psi 左右。小马队的大部分球在大约 13.0psi。但是,这些赛前数据没有被记录下来。
在第二节,小马队拦截了一个爱国者的球。在边线上,他们测量了球的压强,并确定它低于 12.5psi 的阈值。他们及时通知了官方。
中场休息时,所有的比赛用球都被收集起来检查。两名官方人员 Clete Blakeman 和 Dyrol Prioleau 测量了每个球的压强。这里是数据;压强的单位是磅/平方英寸。被小马队拦截的爱国者的球在这个时候没有被检查。大多数小马队的球也没有 - 官方只是耗完了时间,为了下半场的开始,不得不交出了这些球。
```py
football = Table.read_table('football.csv')
football = football.drop('Team')
football.show()
```
| Ball | Blakeman | Prioleau |
| --- | --- |
| Patriots 1 | 11.5 | 11.8 |
| Patriots 2 | 10.85 | 11.2 |
| Patriots 3 | 11.15 | 11.5 |
| Patriots 4 | 10.7 | 11 |
| Patriots 5 | 11.1 | 11.45 |
| Patriots 6 | 11.6 | 11.95 |
| Patriots 7 | 11.85 | 12.3 |
| Patriots 8 | 11.1 | 11.55 |
| Patriots 9 | 10.95 | 11.35 |
| Patriots 10 | 10.5 | 10.9 |
| Patriots 11 | 10.9 | 11.35 |
| Colts 1 | 12.7 | 12.35 |
| Colts 2 | 12.75 | 12.3 |
| Colts 3 | 12.5 | 12.95 |
| Colts 4 | 12.55 | 12.15 |
对于被检查的 15 个球中的每一个,两名官员获得了不同的结果。 在同一物体上重复测量得到不同的结果并不少见,特别是当测量由不同的人进行时。 所以我们将每个球赋为这个球上进行的两次测量的平均值。
```py
football = football.with_column(
'Combined', (football.column(1)+football.column(2))/2
)
football.show()
```
| Ball | Blakeman | Prioleau | Combined |
| --- | --- |
| Patriots 1 | 11.5 | 11.8 | 11.65 |
| Patriots 2 | 10.85 | 11.2 | 11.025 |
| Patriots 3 | 11.15 | 11.5 | 11.325 |
| Patriots 4 | 10.7 | 11 | 10.85 |
| Patriots 5 | 11.1 | 11.45 | 11.275 |
| Patriots 6 | 11.6 | 11.95 | 11.775 |
| Patriots 7 | 11.85 | 12.3 | 12.075 |
| Patriots 8 | 11.1 | 11.55 | 11.325 |
| Patriots 9 | 10.95 | 11.35 | 11.15 |
| Patriots 10 | 10.5 | 10.9 | 10.7 |
| Patriots 11 | 10.9 | 11.35 | 11.125 |
| Colts 1 | 12.7 | 12.35 | 12.525 |
| Colts 2 | 12.75 | 12.3 | 12.525 |
| Colts 3 | 12.5 | 12.95 | 12.725 |
| Colts 4 | 12.55 | 12.15 | 12.35 |
一眼望去,爱国者队的压强显然低于小马队。 由于一些放气在比赛过程中是正常的,独立分析师决定计算距离比赛开始的压强下降值。 回想一下,爱国者的球开始时是大约 12.5psi,小马队的球是大约 13.0psi。 因此爱国者球的压强下降值计算为 12.5 减中场时的压强,小马队的球的压强下降值为 13.0 减半场的压强。
我们来构建两张表,一张是爱国者的数据,一张是小马的。 每张表的最后一列是距离开始的压强下降值。
```py
patriots = football.where('Ball', are.containing('Patriots'))
patriots = patriots.with_column('Drop', 12.5-patriots.column('Combined'))
patriots.show()
```
| Ball | Blakeman | Prioleau | Combined | Drop |
| --- | --- |
| Patriots 1 | 11.5 | 11.8 | 11.65 | 0.85 |
| Patriots 2 | 10.85 | 11.2 | 11.025 | 1.475 |
| Patriots 3 | 11.15 | 11.5 | 11.325 | 1.175 |
| Patriots 4 | 10.7 | 11 | 10.85 | 1.65 |
| Patriots 5 | 11.1 | 11.45 | 11.275 | 1.225 |
| Patriots 6 | 11.6 | 11.95 | 11.775 | 0.725 |
| Patriots 7 | 11.85 | 12.3 | 12.075 | 0.425 |
| Patriots 8 | 11.1 | 11.55 | 11.325 | 1.175 |
| Patriots 9 | 10.95 | 11.35 | 11.15 | 1.35 |
| Patriots 10 | 10.5 | 10.9 | 10.7 | 1.8 |
| Patriots 11 | 10.9 | 11.35 | 11.125 | 1.375 |
```py
colts = football.where('Ball', are.containing('Colts'))
colts = colts.with_column('Drop', 13.0-colts.column('Combined'))
colts
```
| Ball | Blakeman | Prioleau | Combined | Drop |
| --- | --- |
| Colts 1 | 12.7 | 12.35 | 12.525 | 0.475 |
| Colts 2 | 12.75 | 12.3 | 12.525 | 0.475 |
| Colts 3 | 12.5 | 12.95 | 12.725 | 0.275 |
| Colts 4 | 12.55 | 12.15 | 12.35 | 0.65 |
看起来好像爱国者的漏气比小马队更大。 自然统计量是两个平均漏气之间的差异。 我们将处理它,但你可以自由地用其他自然统计量重复分析,例如整体平均漏气与爱国者之间的差异。
```py
patriots_mean = patriots.column('Drop').mean()
colts_mean = colts.column('Drop').mean()
observed_statistic = patriots_mean - colts_mean
observed_statistic
0.73352272727272805
```
这种正面的差异反映了这样的事实,即爱国者的球的平均压强下降值大于小马队。
难道这个差异是偶然的,还是爱国者的下降值太大? 这个问题非常类似于我们之前问过的问题,关于一个大班中的一个小组的成绩。就像我们在这个例子中所做的那样,我们将建立原假设。
原假设:爱国者的下降值就是 15 次下降值中的,大小为 11 的随机样本。 由于机会变异,均值比小马队高。
备选假设:爱国者的下降值太大,并不仅仅是机会变异的结果。
如果原假设是真的,那么爱国者的下降值就可以对比从 15 次下降值随机不带放回抽取的 11 个。 所以让我们创建一个,含有所有 15 个下降值,并从中随机抽取。
```py
drops = Table().with_column(
'Drop', np.append(patriots.column('Drop'), colts.column('Drop'))
)
drops.show()
```
| Drop |
| --- |
| 0.85 |
| 1.475 |
| 1.175 |
| 1.65 |
| 1.225 |
| 0.725 |
| 0.425 |
| 1.175 |
| 1.35 |
| 1.8 |
| 1.375 |
| 0.475 |
| 0.475 |
| 0.275 |
| 0.65 |
```py
drops.sample(with_replacement=False).show()
```
| Drop |
| --- |
| 1.225 |
| 1.175 |
| 1.175 |
| 0.475 |
| 1.375 |
| 0.425 |
| 0.85 |
| 0.65 |
| 1.35 |
| 1.65 |
| 0.725 |
| 0.475 |
| 1.475 |
| 1.8 |
| 0.275 |
注意`sample`的使用没有带样本大小。 这是因为`sample`使用的默认样本大小是表格的行数;如果你不指定样本大小,则会返回与原始表格大小相同的样本。 这对于我们的目的非常理想,因为当你不放回抽样时(通过指定`with_replacement = False`),并且次数与行数相同,最终会对所有行进行随机洗牌。 运行几次该单元格来查看输出如何变化。
我们现在可以使用打乱表的前 11 行作为原假设下的爱国者的下降值的模拟。 剩下的四行形成了对应的小马队的下降值的模拟。 我们可以使用这两个模拟数组来模拟我们在原假设下的检验统计量。
```py
shuffled = drops.sample(with_replacement=False)
new_patriots = shuffled.take(np.arange(11))
new_patriots_mean = new_patriots.column(0).mean()
new_colts = shuffled.take(np.arange(11, drops.num_rows))
new_colts_mean = new_colts.column(0).mean()
simulated_stat = new_patriots_mean - new_colts_mean
simulated_stat
-0.70681818181818212
```
运行几次该单元格来查看检验统计量的变化情况。 请记住,模拟是在原假设下,即爱国者的下降值类似于随机抽样的 15 个下降值。
现在是我们熟悉的步骤了。 我们将在院假设下重复模拟检验统计量。 模拟结束时,数组的`simulated_statistics`将包含所有模拟的检验统计量。
```py
simulated_statistics = make_array()
repetitions = 10000
for i in np.arange(repetitions):
shuffled = drops.sample(with_replacement=False)
new_patriots_mean = shuffled.take(np.arange(11)).column(0).mean()
new_colts_mean = shuffled.take(np.arange(11, drops.num_rows)).column(0).mean()
new_statistic = new_patriots_mean - new_colts_mean
simulated_statistics = np.append(simulated_statistics, new_statistic)
```
现在对于经验 P 值,这是一个几率(在原假设下计算),所得的检验统计量等于观察到统计量,或者更加偏向备选假设方向。 为了弄清楚如何计算它,重要的是要回忆另一个假设:
备选假设:爱国者的下降值太大,并不仅仅是机会变异的结果。
“备选假设的方向”是爱国者的下降值很大,对应我们的检验统计量,“爱国者的均值减去小马队的均值”较大。 所以 P 值是几率(在原假设下计算),所得检验统计量大于等于我们 0.73352272727272805。
```py
empirical_P = np.count_nonzero(simulated_statistics >= observed_statistic)/repetitions
empirical_P
0.0027
```
这是一个非常小的 P 值。 为了观察它,下面是原假设下检验统计量的经验分布,其中观察到的统计量标在横轴上。
```py
print('Observed Statistic:', observed_statistic)
print('Empirical P:', empirical_P)
results = Table().with_column('Simulated Statistic', simulated_statistics)
results.hist()
plots.scatter(observed_statistic, 0, color='red', s=30);
Observed Statistic: 0.733522727273
Empirical P: 0.0027
```
请注意,分布大部分集中在 0 左右。在原假设下,爱国者的下降值是所有 15 下降值的随机样本,因此小马对也是如此。 所以这两组下降值的平均值应该大致相等,因此它们的差值应该在 0 左右。
但是检验统计量的观察值离分布的中心还有很远的距离。 使用什么是“小”的任何合理的截断值,经验 P 值都是小的。 所以我们最终拒绝原假设的随机性,并得出结论,爱国者的下降值太大,并不单独反映机会变异。
独立的调查小组以数种不同的方式分析数据,并考虑到物理定律。最后的报告说:
> “爱国者比赛用球的平均压降超过了小马队的球的平均压降 0.45psi 至 1.02psi,这取决于所使用的测量仪的各种可能的假设,并假设爱国者的球的初始压强为 12.5psi,小马队的球是 13.0psi。”
> - 2015 年 1 月 18 日,由 NFL 委托对 AFC 冠军赛的调查报告
我们的分析显示,平均压降约为 0.73psi,接近“0.45 至 1.02psi”的中心,因此与官方分析一致。
请记住,我们对假设的检验并没有确定差异不是偶然的原因。 建立因果关系通常比进行假设检验更为复杂。
但足球世界里最重要的问题是因果关系:问题是爱国者足球的压强过大是否是故意的。 如果你对调查人员的答案感到好奇,这里是[完整的报告](https://nfllabor.files.wordpress.com/2015/05/investigative-and-expert-reports-re-footballs-used-during-afc-championsh.pdf)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册