第 3 章 统计实验与显著性检验

第 3 章 统计实验与显著性检验

实验设计是统计学实践的基石,几乎所有的研究领域都要用到实验。实验设计的目标是设计出能确认或推翻某个假设的实验。数据科学家需要开展连续的实验,尤其是与用户界面和产品营销相关的实验。本章概述了传统的实验设计方法,并指出了数据科学中常见的挑战。本章还将介绍一些在统计推断中常用的概念,并解释它们的意义以及与数据科学的相关性。

如果看到统计显著性t 检验p等概念,这一般是在经典统计推断“流水线”的场景下(如图 3-1 所示)。统计推断过程开始于某个假设,例如,“药物 A 要好于现有的标准药物”“价格 A 比现有的价格 B 更有利可图”。实验(例如 A/B 测试)是设计用于验证假设的,我们希望所设计的实验能得出结论性的结果。实验中会收集并分析数据,进而得出结论。推断(inference)一词反映了这样一个意图:将从有限数据集上得到的实验结果应用于更大的过程或总体。

图 3-1:经典的统计推断流水线

3.1 A/B测试

A/B 测试将实验分成两个组开展,进而确定两种处理、产品、过程等中较优的一个。在两组实验中,一般会有一组采用现有的标准处理,或者是不执行任何处理,称为对照组,而另一组称为实验组。实验中的一个典型假设是实验组要优于对照组。

主要术语

处理

  实验对象所接触的东西,例如药品、价格、Web 标题等。

实验组

  执行特定处理的一组对象。

对照组

  执行标准处理或不执行处理的一组对象。

随机化

  随机地分配实验对象以进行处理的过程。

实验对象

  接受处理者,例如 Web 访问者、病人等。

检验统计量

  用于检验处理效果的度量。

A/B 测试的结果易于测量,因此被广泛地用于 Web 设计和营销中。下面列出了一些使用 A/B 测试的例子。

  • 测试两种土壤处理,以确定哪种土壤更适合育种。
  • 测试两种疗法,以确定哪种疗法对于抑制癌症更有效。
  • 测试两种价格,以确定哪种价格的净利润更高。
  • 测试两个 Web 标题,以确定哪个标题会带来更多的点击量(如图 3-2 所示)。
  • 测试两条网络广告,以确定哪条广告能转化为更多的购买行为。

{%}

图 3-2:市场营销人员对两种 Web 展示持续进行对比测试

A/B 测试有对象,对象会分配给两组处理中的一组。对象可能是一个人、一种植物种子或一位 Web 访问者。注意,对象需要接受处理。在理想情况下,对象是随机指定(即随机分配)给一组处理的。这样,两个实验组之间的任何差异,只可能是由下面两个因素所导致的。

  • 不同处理的效果。
  • 将对象分配到不同处理过程中的运气因素。一些对象的效果本来就很好,而随机分配可能会导致效果好的对象集中在处理 A 或处理 B 中。

在 A/B 测试中,我们也需要关注比较 A 组和 B 组时使用的检验统计量(即度量)。在数据科学中,最常用的度量可能是二元变量,例如点击或未点击,购买或不购买,作弊或未作弊,等等。我们可以将比较结果归纳为一个 2×2 的表格。表 3-1 给出了实际价格测试结果的一个 2×2 的表格。

表3-1:电子商务实验结果的2×2表格

结果

价格A

价格B

点击转化为购买

200

182

点击没有转化为购买

23 539

22 406

在比较中所使用的度量,可以是连续变量(例如购买数量、利润等),也可以是计数(例如住院天数、访问的页面数量)。两者的结果显示存在着差异。如果关注的并非点击广告的转化情况,而是每次页面浏览的收益情况,那么在常见的软件输出中,表 3-1 的价格测试结果大致如下。

  Revenue/page-view with price A: mean = 3.87, SD = 51.10

  Revenue/page-view with price B: mean = 4.11, SD = 62.98

结果中的 SD 表示的是各组中值的标准偏差。

 一些统计软件(包括 R 在内)会默认生成输出,但不能因此认为所有的输出信息都是有用的,或是与结果相关的。我们可以看到,上面给出的标准偏差就并非十分有用。它们表明数据中可能存在大量的负值,但我们知道,收入值是不可能为负的。这是由于数据集由少量较大的值(表示点击转化为购买)以及大量的零值(表示点击未转化为购买)组成。此类数据的变异性很难用单个数字总结。相对于标准偏差而言,更合理的度量是偏离均值的绝对偏差均值(A 组是 7.68,B 组是 8.15)。

3.1.1 为什么要有对照组

在实验中为什么不能抛开对照组,只对一个组应用我们所关注的处理,并将结果与先前的经验进行对比?

这是因为,如果没有对照组,就不能确保“其他条件均一样”,也不能确保所有差异的确是由处理(或偶然)导致的。除了处理,对照组与处理组具有相同的条件。如果我们只对比“基线”或先前的经验,那么除了处理,可能还有其他一些因素存在差异。

 单盲研究和双盲研究

单盲研究中,实验对象本身并不知道自己接受的是处理 A 还是处理 B。如果对象知道自身所接受的处理,那么会对响应产生影响。双盲研究是指研究者和协助者(例如医学研究中的医生和护士)都不知道哪个对象接受了哪种处理。如果处理是公开透明的,则盲测是不可行的,例如电脑与心理学家间的认知疗法。

在数据科学中,A/B 测试常用于 Web 领域,其中的处理可以是网页的设计、产品的价格、标题用语等。我们需要思考如何遵守随机化的原则。通常,实验对象是 Web 访问者,所关注的结果是点击数、购买、访问时长、访问的页面数量、某个页面是否被访问等。在标准的 A/B 测试中,需要预先确定一个度量。我们可能需要采集多种行为度量,而且这些度量可能是我们所关注的。但是,如果如果希望实验能在处理 A 和处理 B 这两者之间做出一个决策,那么就需要预先确立一个度量,即检验统计量。如果在实验开展后再去选择某个检验统计量,这无疑会引入研究人员的一些偏好。

3.1.2 为什么只有处理A和B,没有C、D……

A/B 测试在营销和电子商务领域十分常见,但并非唯一的统计实验类型。我们还可以加入一些其他类型的实验,也可以对实验对象做重复的测量。例如,一些药物试验存在受试者(即实验对象)稀缺、成本高且需要不断寻找的问题,因此其实验设计中会有多个终止实验并得出结论的偶然性。

传统的统计实验设计关注的是如何回答有关具体处理的效果的静态问题。对于下面列出的两个问题,数据科学家更关注的是问题 2。

问题 1:价格 A 和价格 B 之间的差异是否是统计显著的?

问题 2:在多种可能的价格中,哪种价格最好?

鉴于此,数据科学家采用的是一种相对新颖的实验设计方法,即多臂老虎机算法(参见 3.10 节)。

 获得实验许可

开展科学研究和医疗研究时,如果实验对象是人,那么通常需要获得他们的许可,并获得某机构审查委员会的批准。作为持续性操作的一部分的商业实验,几乎从未获得许可。大多数情况下,例如在确定价格的实验、确定显示哪个标题或是应该提供哪个报价的实验中,这种做法已被广泛接受。然而在 2014 年,Facebook 就在这个普遍接受的问题上碰了壁。该公司当时开展了一项有关用户新闻推送中的情感影响的实验。Facebook 利用情感分析技术将新闻推送帖子分为正面情感和负面情感两类,然后更改了展示给用户的内容的正负面情感的平衡。Facebook 随机选取了一些用户,向他们推送正面情感的帖子,同时向另一些用户推送负面情感的帖子。Facebook 发现,阅读正面情感帖子的用户更倾向于发布正面情感的帖子,反之亦然。尽管该实验的影响不大,但 Facebook 是在未经用户许可的情况下开展的实验,因而受到了不少批评。一些人认为,如果 Facebook 在实验中向一些极端抑郁的用户推送了负面内容的新闻,那么有可能会导致此类用户崩溃。

 

本节要点

将实验对象分配给两组或更多组,各组的条件完全相同,只是要接受的处理不同。 在理想情况下,实验对象是随机分配给各组的。

3.1.3 拓展阅读

  • 两组进行对比(即 A/B 测试)是传统统计学中一种最基本的测试。几乎任何统计学入门书都会全面地介绍 A/B 测试的设计原则和推断过程。Peter Bruce 撰写的 Introductory Statistics and Analytics: A Resampling Perspective 一书着重介绍了如何在数据科学场景中使用 A/B 测试和重抽样。
  • 在 Web 测试中,测试的逻辑性和统计学方法同样具有挑战性。推荐从 Google Analytics 中关于实验的帮助章节入手。
  • 互联网上有大量的 A/B 测试指南,其中给出的建议须谨慎对待。例如:“等到大约有 1000 名访问者后,确保运行测试一周时间。”在统计学中,此类通用经验法则毫无意义。详细内容参见 3.11 节。

3.2 假设检验

假设检验也称显著性检验,在公开发表的传统统计学研究中随处可见。假设检验的目的是确定一个观测到的效果是否是由随机性(random chance)造成的。

主要术语

零假设

  完全归咎于偶然性的假设。

备择假设

  与零假设相反,即实验者希望证实的假设。

单向检验

  在假设检验中,只从一个方向上计数偶然性结果。

双向检验

  在假设检验中,从正反两个方向上计数偶然性结果。

在构建 A/B 测试(参见 3.1 节)时,我们通常会预先构想一个假设,例如假设价格 B 可能会带来更高的利润。那么我们为什么需要做出一个假设?为什么不能只是查看实验的结果,然后选择处理结果更好的那一组?

问题的答案在于,人们在思想上倾向于低估天然随机行为的范围。一个典型的例证就是难以预料极端事件,即黑天鹅事件(参见 2.8 节)。另一个例证是人们倾向于将随机事件曲解为具有某种显著性的模式。为此,人们提出了统计假设检验方法,目的是使研究人员免受随机性的愚弄。

曲解随机性

我们可以发现,人们倾向于在实验中低估随机性。让一些朋友构想抛 50 次硬币的结果,并写下一系列随机的 H(正面朝上)和 T(反面朝上)。然后,让这些朋友实际去抛 50 次硬币,并记录结果。将真正的硬币抛掷结果和人工生成的结果各放一处。我们很容易看出哪个结果是真实的,因为真实的结果中会出现一组连续的 H 或 T。在真实的抛 50 次硬币中,常常能看见五六个连续的 H 或 T。但是,我们大多数人在构想随机抛硬币的结果时,如果已经连续有三四个 H,就会暗示自己,最好在这里就切换为 T,这样序列看上去更随机一些。

另外,抛硬币实验也说明了一个问题。如果的确在现实世界中看到了类似于连续出现 6 个 H 这样的事情,例如一个标题比另一个标题好 10%,我们倾向于将其归因于真实情况,而非巧合。

在一个设计适当的 A/B 测试中,处理 A 和处理 B 之间任何可观测到的差异,必定是由下面两个因素之一所导致的。

  • 分配对象中的随机可能性
  • 处理 A 和处理 B 之间的真实差异

统计假设检验是对 A/B 测试(或任何随机实验)的进一步分析,意在评估随机性是否可以合理地解释 A 组和 B 组之间观测到的差异。

3.2.1 零假设

假设检验使用的逻辑是:“鉴于人们倾向于对异常的随机行为做出反应,并将其解释为有意义的真实行为,我们要在实验中证明,组间差异要比偶然性可能导致的差异更极端。”这里包含了一个基线假设,即各个处理是等同的,并且组间差异完全是由偶然性所导致的。我们称该基线假设为零假设。事实上,我们希望能证明零假设是错误的,并证明 A 组和 B 组结果之间的差异要比偶然性可能导致的差异更大。

一种实现方式是通过重采样置换过程,对 A 组和 B 组的结果做随机混洗,并反复将数据分配为规模相近的组,之后查看实验得到的差异与观测差异同样极端的频率。更多内容参见 3.3 节。

3.2.2 备择假设

假设检验本身不仅包括零假设,还包括一个相抵消的备择假设。下面通过一些例子来说明。

  • 零假设是“A 组和 B 组的均值间没有差异”,备择假设是“A 不同于 B”(可能更大,也可能更小)。
  • 零假设是“A ≤ B”,备择假设是“B > A”。
  • 零假设是“B 不会比 A 大 x%”,备择假设是“B 比 A 大 x%”。

总而言之,零假设和备择假设必须涵盖了所有的可能性。假设检验的结构取决于零假设的性质。

3.2.3 单向假设检验和双向假设检验

A/B 测试通常是根据一个已有的默认选项(比如 A)去测试一个新的选项(比如 B),并且假定除非证明 B 明显优于 A,否则我们将坚持使用 A。在这种情况下,我们需要一个假设检验来免受倾向于 B 的偶然性的欺骗。我们并不在意在另一个方向上是否会受偶然性的愚弄,因为除非能证明 B 更好,否则我们将坚持 A。所以,我们需要一种有方向的备择假设(即 B 比 A 好)。这种情况下,我们可以使用单向(或“单尾”)假设检验。这意味着极端偶然性只会导致从一个方向上计入 p 值。

如果想要假设检验使我们免受任意方向上偶然性的愚弄,那么备择假设应该是双向的(即 A 不同于 B,它可能更大,或是更小)。在这种情况下,我们要使用双向(或“双尾”)假设。这意味着极端偶然性导致可以从任意一个方向上计入 p 值。

单向假设检验通常遵循 A/B 决策过程,即需要指定一个选项,并且除非证明另一个选项更好,否则将指定该选项为“默认”的。然而,包括 R 在内的一些软件的默认输出通常提供的是双向测试,并且许多统计学家为了避免争议,也会选择更为保守的双向测试。选择单向还是双向,这是一个让人困惑的问题,但是该问题与数据科学的关系并不大。在数据科学中,p 值的计算精度并非十分重要。

本节要点

  • 零假设的逻辑理念体现为没有特殊事件发生,任何观察到的效果都是由随机偶然导致的。
  • 假设检验假定零假设为真,创建“零模型”(一种概率模型),并检验所观察到的效果是否是该模型的合理结果。

3.2.4 拓展阅读

  • Leonard Mlodinow 撰写的 The Drunkard's Walk: How Randomness Rules Our Lives 一书综述了“随机性控制我们生活”的方式。
  • David Freedman、Robert Pisani 和 Roger Purves 的经典统计学教材 Statistics(第 4 版)。该书没有采用罗列数学理论的方式,并很好地介绍了大部分统计学内容,其中包括假设检验。
  • Peter Bruce 撰写的 Introductory Statistics and Analytics: A Resampling Perspective 一书,从重抽样角度介绍了假设检验的概念。

3.3 重抽样

在统计学中,重抽样是指从观测数据中反复地抽取数据值,目标是评估一个统计量中的随机变异性。重抽样还可用于评估并提高一些机器学习模型的准确性。例如,对于使用多个自助数据集构建的决策树模型,可以通过 Bagging 过程计算其平均值,参见 6.3 节。

重抽样过程主要有两种类型,即自助法置换检验。自助法用于评估一个估计量的可靠性,我们在前面已经做了介绍(参见 2.4 节)。本节将介绍用于检验假设的置换检验,它通常涉及两组或多组。

主要术语

置换检验

  将两组或多组样本组合在一起,并将观测值随机地(或穷尽地)重新分配给重抽样。

  同义词:随机化检验、随机置换检验、准确检验

有放回,无放回

  在抽样时,所抽取的元素在下一次抽取前是否放回样本中。

3.3.1 置换检验

置换过程涉及两组或多组样本,通常是 A/B 测试或其他假设检验中的组。置换意味着改变一组值的顺序。要对一个假设进行置换检验,首先要将从 A 组和 B 组(当然还可以包括其他组,例如 C、D……)中得到的结果组合在一起。这就是零假设的逻辑,即无论处理指定给哪个组,都是无差别的。然后,我们从组合集中随机抽取出各个组,并查看组间的差异情况,实现对假设的检验。置换过程如下。

(1) 将各个组得出的结果组合为一个数据集。

(2) 对组合得到的数据做随机混洗,然后从中随机抽取(有放回)一个规模与 A 组相同的重抽样样本。

(3) 在余下的数据中,随机抽取(无放回)一个规模与 B 组相同的重抽样样本。

(4) 如果还有 C 组、D 组甚至更多的组,执行同样的操作。

(5) 无论对原始样本计算的是哪一种统计量或估计量(例如,组比例差异),现在对重抽样进行重新计算,并记录结果。这构成了一次置换迭代。

(6) 重复上述步骤 R 次,生成检验统计量的置换分布。

现在我们回头查看所观测到的组间差异,并与置换差异进行对比。如果观测到的差异位于置换差异内,那么置换检验的结果并不能证实任何事情,因为观测到的差异落在偶然可能产生之差异的范围内。但是,如果观测到的差异大部分落在置换分布之外,那么我们就可以得出“与偶然性无关”这一结论。如果使用专业术语描述,我们称差异是统计显著的(参见 3.4 节)。

3.3.2 例子:Web黏性

有一家公司提供较高价格的服务。现在,该公司想要测试两种 Web 显示,以确定哪一种能带来更高的销售额。由于该公司提供的服务价格较高,因此销量并不大,而且销售周期很长。要想确定哪种 Web 显示的效果更好,该公司需要很长的时间才能积累到足够多的销售数据。鉴于此,该公司决定使用一种代理变量来度量结果,并使用详细描述公司服务的内部页面替代。

 代理变量是一种可以代表我们所关注的真正变量的变量。真正关注的变量可能不可用,也可能度量的成本太高或耗时过长。例如,在气候研究中,远古冰芯的含氧量被用作温度的代理变量。最好至少有一点关于真正变量的数据,这样可以评估真正变量与代理变量间的关联程度。

在本例中,一个潜在的代理变量是着陆页上的点击数。当然,更好的代理变量是访问者在页面上停留的时间。可以认为,如果一个 Web 显示页面能吸引人们关注更长的时间,那么它就可能会带来更高的销售额。因此,我们这里所采用的度量是页面 A 与页面 B 的平均会话时间。

由于检验中所使用的 Web 页面是内部专用的,因此并不会有大量的访问者。另外应注意的是,我们使用了 Google Analytics(GA)工具测定会话时间,但是 GA 无法测定访问者上次访问的会话时间。不过,GA 并不从数据中删除该会话,而是将记录置为零,因此我们需要对数据做一些额外的处理,以从数据中删除这些会话。基于此,我们就两种不同的 Web 显示合计得到了 36 个会话,其中页面 A 的会话为 21 个,页面 B 的会话为 15 个。为了直观地比较会话时间,我们使用 ggplot 实现了箱线图的并排绘制。

ggplot(session_times, aes(x=Page, y=Time)) +
  geom_boxplot()

生成的箱线图如图 3-3 所示。图中显示了页面 B 具有比页面 A 更长的会话时间。各组的均值计算方式如下所示。

mean_a <- mean(session_times[session_times['Page']=='Page A', 'Time'])
mean_b <- mean(session_times[session_times['Page']=='Page B', 'Time'])
mean_b - mean_a
[1] 35.66667

图 3-3:页面 A 和页面 B 的会话时间

页面 B 的会话时间更长,平均比页面 A 高出约 35.7 秒。但问题在于,这一差距是否落在随机性可能生成的范围内,即是否是统计显著的。要回答这一问题,一种方法是应用置换检验,将所有会话时间组合在一起,然后反复做随机混洗,再将数据分为一个具有 21 个观测值的组(页面 A,n = 21)和一个具有 15 个观测值的组(页面 B,n = 15)。

我们实现了一个进行置换检验的函数。该函数可以将 36 个会话时间随机分配给一个具有 21 个元素的组(页面 A)和一个具有 15 个元素的组(页面 B)。这个函数的代码如下。

perm_fun <- function(x, n1, n2)
{
  n <- n1 + n2
  idx_b <- sample(1:n, n1)
  idx_a <- setdiff(1:n, idx_b)
  mean_diff <- mean(x[idx_b]) - mean(x[idx_a])
  return(mean_diff)
}

该函数的工作原理是,无放回地抽样 n2 次,并分配给 B 组,余下的 n1 次抽样分配给 A 组。函数返回两组均值之间的差异。我们指定 n2 = 15,n1 = 21,并调用该函数 R = 1000 次,然后绘制所生成的会话时间差异分布情况的直方图。

perm_diffs <- rep(0, 1000)
for(i in 1:1000)
  perm_diffs[i] = perm_fun(session_times[,'Time'], 21, 15)
hist(perm_diffs, xlab='Session time differences (in seconds)')
abline(v = mean_b - mean_a)

图 3-4 显示了生成的直方图。从图中可以看出,对于页面会话时间,随机置换的均值差异通常会超出观测到的差异(图中的垂直线)。这表明,页面 A 和页面 B 会话时间间的观测差异落在随机变异的范围内,因此不是统计显著的。

图 3-4:页面 A 和页面 B 会话时间差异的频数分布

3.3.3 穷尽置换检验和自助置换检验

置换检验除了使用前面介绍的随机混洗过程(也称随机置换检验随机检验)之外,还有两种重要变体:

  • 穷尽(exhaustive)置换检验
  • 自助(bootstrap)置换检验

穷尽置换检验并不是随机混洗并分组数据,而是尝试所有可能的分组。穷尽置换检验只适用于规模较小的样本。如果做大量的重复混洗,那么随机置换检验的结果会近似于穷尽置换检验的结果,并在极限上逼近。穷尽置换检验有时也被称为准确检验,因为其统计学属性确保了零模型不会被检验为比 α 值水平更显著(参见 3.4 节)。

自助置换检验是在置换检验第二步和第三步的抽取中,进行有放回抽样,而非无放回抽样。这样,重抽样过程不仅建模了随机分配对象给处理的过程,而且建模了从总体中随机抽取对象的过程。这两个都是统计学过程,但是它们之间的差别过于复杂,因而不被数据科学实践所关注。

3.3.4 置换检验:数据科学的底线

在探索随机变异性中,置换检验是一种十分有用的启发式过程。它很容易编码,也很容易理解和解释。针对统计学中那些基于公式的形式主义和“假决定论”,置换检验提供了切实可行的绕行方法。

不同于依赖于统计学公式的方法,重抽样的一个优点在于给出了一种更加近乎于“万能”的推断方法。它所适用的数据可以是数值,也可以是二元的;样本规模可以相同,也可以不同;并且无须假设数据符合正态分布。

本节要点

  • 置换检验将多个样本组合在一起,并做随机混洗。
  • 对混洗后的值做分组并重抽样,计算我们感兴趣的统计量。
  • 重复上述过程,并在表格中记录重抽样统计量的情况。
  • 对比统计量的观测值与重抽样分布,就可以判定观测到的样本间差异是否由偶然性导致的。

3.3.5 拓展阅读

  • Eugene Edgington 和 Patrick Onghena 合著的 Randomization Tests。不要过度沉溺于该书中的非随机抽样内容。
  • Peter Bruce 撰写的 Introductory Statistics and Analytics: A Resampling Perspective 一书。

3.4 统计显著性和p

统计学家引入了统计显著性的概念,用于衡量一个实验(也可以是对已有数据的研究)所生成的结果是否会比随机情况下可能给出的结果更极端。如果生成的结果超出了随机变异的范围,则我们称它是统计显著的。

主要术语

p

  对于一个加入了零假设的偶然性模型,p 值指得到与观测结果一样不寻常或极端的结果的概率。

α

  在实际结果的确是统计显著的情况下,α 值指偶然性结果必须超出的“不寻常性”概率的阈值。

第一类错误

  错误地将一个由随机导致的效果归结为真。

第二类错误

  错误地将一个为真的效果归结为由随机导致的。

以表 3-2 为例,表中数据是 3.1 节中 Web 测试的结果。

表3-2:电子商务实验结果的2×2表格

结果

价格A

价格B

点击转化为购买

200

182

点击没有转化为购买

23 539

22 406

价格 A 的转化情况比价格 B 好近乎 5%(0.8425% 对比 0.8057%,差异为 0.0368%)。当业务量很大时,这一差异就会具有显著的意义。一个有超过 4.5 万条数据的集合,完全可以被视为“大数据”,没有必要做统计显著性检验,统计显著性检验主要针对的是小规模样本中的抽样变异性。不过我们也能看到,此例中的转化率非常低,甚至小于 1%,以至于实际有意义的值(即转化)只有数百个。事实上,所需的样本规模取决于转化率。我们可以使用重抽样,检验价格 A 与价格 B 之间的转化差异是否位于随机变异的范围内。这里所说的随机变异(chance variation),是指在概率模型中加入“两者在转换率上不存在差异”这一零假设后,由模型生成的随机变异性(参见 3.2.1 节)。下面我们给出一个置换过程,该过程的目的是要回答如下问题:“如果两种价格具有相同的转换率,那么随机变异的方差能否产生 5% 的差异?”

(1) 将所有的样本结果置于同一个桶中。同一个桶表示假定两种价格具有相同的转换率。在本例中,我们有 200 + 182 = 382 个 1,23539 + 22406 = 45945 个 0,这样转换率为 382/(45945 + 382) = 0.008246 = 0.8246%。

(2) 在桶中做随机混洗,并从中抽出规模为 23 739(与价格 A 的 n 值相同)的重抽样,记录抽样中 1 的个数。

(3) 记录桶中余下 22 588(与价格 B 的 n 值相同)个数据点中 1 的个数。

(4) 记录两者中 1 的比例在百分位数上的差异。

(5) 重复第 2 步到第 4 步多次。

(6) 计算其中差异大于或等于 0.0368% 的频数。

下面,我们再次使用 3.3.2 节中定义的函数 perm_fun,创建随机置换转换率差异的直方图。

obs_pct_diff <- 100*(200/23739 - 182/22588)
conversion <- c(rep(0, 45945), rep(1, 382))
perm_diffs <- rep(0, 1000)
for(i in 1:1000)
  perm_diffs[i] = 100*perm_fun(conversion, 23739, 22588 )
hist(perm_diffs, xlab='Session time differences (in seconds)')
abline(v = obs_pct_diff)

生成的绘图如图 3-5 所示,图中显示的直方图是 1000 次重抽样的结果。在本例中,我们观察到的差异 0.0368 落在随机差异的范围内。

图 3-5:价格 A 和价格 B 的转换率差异的频数分布

3.4.1 p

在衡量统计显著性时,简单地查看绘图并不是一个非常精确的方法,人们更关注的是 pp 值表示随机模型生成的结果比观测结果更极端的频数。在估计置换检验的 p 值时,我们可以采用置换检验中生成大于或等于观测差异值的检验次数所占的比例。

mean(perm_diffs > obs_pct_diff)
[1] 0.308

结果显示 p 值为 0.308,这意味着随机性给出的差异,有望在约 30% 的情况下大于或等于观测差异 1

1此处 p 值的计算具有随机性,因此在实际运行示例程序时,给出的 p 值可能是一个与本例输出近似的值。——译者注

在本例中,我们不需要使用置换检验也可以获得 p 值。根据二项分布,我们可以使用正态分布近似估计 p 值。在使用 R 语言编程时,函数 prop.test 执行该操作。

> prop.test(x=c(200,182), n=c(23739,22588), alternative="greater")

        2-sample test for equality of proportions with continuity correction

data: c(200, 182) out of c(23739, 22588)
X-squared = 0.14893, df = 1, p-value = 0.3498
alternative hypothesis: greater
95 percent confidence interval:
 -0.001057439  1.000000000
sample estimates:
     prop 1      prop 2
0.008424955 0.008057376

在函数的输出中,参数 x 表示各组的成功次数,参数 n 是试验次数。我们可以看到,由正态近似所生成的 p 值为 0.3498,接近于使用置换检验所得到的 p 值。

3.4.2 α

完全根据研究人员的判断力去确定一个结果是否“太不寻常”因而是偶然的,统计学家无疑会对此做法大皱眉头。在统计学家看来,正确的做法是提前设定一个阈值,例如“超过随机(零假设)结果 5%”。这样的阈值被称为 α 值。α 值的常见取值是 5% 和 1%。α 值的选取具有一定的随意性——该过程无法确保在 x% 的情况下做出正确的决策。原因在于我们要回答的概率问题并不是“随机发生的概率是多少”,而是“给定一个随机模型,出现极端结果的概率是多少”。这样我们需要对随机模型的适当性进行逆推,但是在判断过程中没有任何可依据的概率。这个问题一直困扰着统计学家。

p值的意义

近年来,对 p 值的使用一直存在着相当大的争议。一份心理学期刊甚至“禁止”在其收到的论文中使用 p 值,理由是如果只根据 p 值做出论文可以出版的决定,那么会导致一些质量不好的研究得以发表。有太多的研究人员只是大概了解 p 值的真正含义,就根据数据和各种可能的假设开展检验,直到找出一种可以生成显著 p 值的组合,由此撰写出一篇适合发表的论文。

真正的问题在于,我们希望 p 值能包含更多的意义,并且希望 p 值能够表达如下信息。

结果由随机所导致的概率。

而且我们希望该值越低越好,这样就可以得出某一假设得到证明的结论。这也是不少期刊编辑对 p 值的解释。但 p 值实际所表示的是如下含义。

给定一个随机模型,模型所给出的结果与观测结果同样极端的概率。

这两者之间的差异并不明显,但的确存在。显著的 p 值并非如看上去那样,它并不能引导我们沿着一条似乎正确的“证明”道路走下去。如果我们理解了 p 值的真正含义,那么就此得出“统计显著”结论的逻辑基础是不太稳固的。

2016 年 3 月,美国统计协会(ASA)在经过内部审议后,发表了一份关于 p 值使用的警告性声明,其中揭示了人们对 p 值的误解程度。

美国统计协会的声明指出了针对研究人员和期刊编辑的六项原则。

(1) p 值可以表示数据与指定统计模型间的不兼容程度。

(2) p 值并不能测量所研究的假设为真的概率,也不测量仅通过随机性生成数据的概率。

(3) 不应仅根据 p 值是否超过了给定的阈值,就得出一个科学结论,或做出一个商业或政策决定。

(4) 正确的推断需要具有全面的报告和完全的透明度。

(5) p 值(或统计显著性)并不测量效果的规模,也不测量结果的重要性。

(6) p 值本身并不能提供一种对模型或假设的很好量度。

3.4.3 第一类错误和第二类错误

在评估统计显著性时,可能会出现下面两种类型的错误。

  • 第一类错误:错误地将仅由随机性导致的效果判定为真。
  • 第二类错误:错误地将实际为真的效果判定为假的(即由随机性导致的)。

事实上,第二类错误并不是一种错误,它是由于判断样本的规模过小,而无法检测到效果。如果 p 值不足以表明统计显著性(例如,超过 5%),我们应称其为“效果未验证”。增大样本的规模,可能会生成较小的 p 值。

显著性检验(即假设检验)的基本功能就是防止我们被随机性愚弄。因此,我们通常可以通过构造显著性检验去最小化第一类错误。

3.4.4 数据科学与p

数据科学家所做的工作一般并不会发表在科学期刊上,因此对 p 值意义的辩论是颇具学术性的。如果数据科学家想知道一个看上去有意义并且有用的模型结果是否落在随机变异的范围内,p 值是一种有用的指标。作为一种在实验中使用的决策工具,p 值不应被视为一种决定性的因素,而应被视为是另一种可以辅助决策的信息。例如,有时可以将 p 值作为一些统计学或机器学习模型的中间输入值,根据 p 值决定一个特征应该包含在模型中,还是应该从模型中排除。

本节要点

  • 显著性检验可以用于确定观测到的效果是否落在零假设模型的随机变异范围内。
  • 给定一个零假设模型,p 值表示模型所生成的结果与观测到的结果同样极端的概率。
  • α 值是零假设随机模型“不寻常性”的阈值。
  • 相对于数据科学而言,显著性检验在正式的研究报告中更加重要。但是近年来,即便是对于研究报告,p 值的重要性也一直在下降。

3.4.5 拓展阅读

  • Stephen Stigler 的论文“Fisher and the 5% Level”对 Ronald Fisher 1925 年出版的 Statistical Methods for Research Workers 一书做了综述,其中重点关注了 5% 的显著性水平。
  • 参见 3.2.4 节“拓展阅读”的内容。

3.5 t 检验

显著性检验具有多种类型,具体取决于数据集是计数数据还是测量数据、所具有的样本数量以及测量的具体内容。t 检验是其中一种十分常用的检验,其命名源于最初由 W. S. Gossett 提出的学生 t 分布。t 分布用于估计单个样本均值的分布情况(参见 2.8 节)。

主要术语

检验统计量

  对我们所关注的差异或效果的度量。

t 统计量

  归一化的检验统计量。

t 分布

  一种用于比较所观测到的 t 统计量的参考分布。对于 t 检验,参考分布是从零假设生成的。

所有的显著性检验都要求指定一个检验统计量去测量所关注的效果,并确定观测到的效果是否落在随机变异的范围内。在重抽样检验(参见 3.3.1 节对置换的介绍)中,数据的规模并不是十分重要。我们从数据本身创建参考(零假设)分布,并据此使用检验统计量。

统计假设检验形成于 20 世纪 20 年代和 30 年代,当时无法做到对数据随机混洗数千次,以用于重抽样检验。但是统计学家发现,t 检验很好地近似了置换(随机混洗)分布。t 检验基于格赛特提出的 t 分布,可以在十分常见的两个样本的比较(即 A/B 测试)中使用,只要样本中的数据是数值型的。但是在使用 t 分布时,为了排除规模因素的影响,必须对检验统计量做归一化处理。

经典的统计学教材在介绍 t 检验时,会列出多个公式,其中包含了格赛特提出的 t 分布。还会介绍如何对数据做归一化,以便与标准 t 分布做比较。但是在本书中,我们并不会给出这些公式,因为这些公式已经包含在 R 和 Python 等统计软件的常用命令中。在 R 语言中,我们可以使用函数 t.test

> t.test(Time ~ Page, data=session_times, alternative='less' )

        Welch Two Sample t-test

data:  Time by Page
t = -1.0983, df = 27.693, p-value = 0.1408
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
     -Inf 19.59674
sample estimates:
mean in group Page A mean in group Page B
            126.3333             162.0000

其中的备择假设是页面 A 会话时间的均值小于页面 B 的。给出的 p 值非常接近置换检验的 p 值 0.124,参见 3.3.2 节。

我们可以使用重抽样,构造出一个能够反映观测数据和要检验的假设的解决方案,而无须关心数据是数值型还是二元的,样本的规模是否平衡,以及样本方差等因素。如果使用统计学公式,很多变异性可以表示为公式形式,但是这些公式可能会令人困惑。统计学家需要依靠公式去探索问题并按图索骥,但是数据科学家并不需要这样做。通常,数据科学家并不需要钻研假设检验和置信区间的细枝末节,这些是研究人员在准备论文以便展示时需要搞清楚的。

本节要点

  • 在计算机出现之前,重抽样检验并不实用,统计人员使用标准参考分布。
  • 检验统计量应该做归一化,这样才能与参考分布做比较。
  • t 统计量是一种广为使用的归一化统计量。

拓展阅读

  • 任何一本统计学入门教材都会介绍 t 统计量及其用途。在此我们推荐两本教材。一本是 David Freedman、Robert Pisani 和 Roger Purves 合著的经典统计学教材 Statistics(第 4 版),另一本是 David S. Moore 撰写的 The Basic Practice of Statistics
  • 关于 t 检验和重抽样过程的并行处理,推荐阅读 Peter Bruce 撰写的 Introductory Statistics and Analytics: A Resampling Perspective 一书,或者 Robin Lock 及其他四位洛克家族成员合著的 Statistics: Unlocking the Power of Data 一书。

3.6 多重检验

在 2.2 节中我们曾提及,统计学中有一句话:“如果拷问数据的时间足够长,那么它迟早会招供。”这意味着,如果我们能从足够多的视角去观察数据,并提出足够多的问题,几乎总是可以发现具有统计显著性的效果。

主要术语

第一类错误

  错误地得出一个效果是统计显著的结论。

错误发现率

  在多重检验中,犯第一类错误的比率。

p 值校正

  用于在同一数据上做多重检验。

过拟合

  拟合了噪声。

例如,给定随机生成的 20 个预测变量和一个结果变量,如果进行一组 20 次 α = 0.05 水平的显著性检验,那么很可能至少有一个预测因子会(错误地)显示为统计显著的。如上所述,这被称为第一类错误。在计算第一类错误的概率时,可以首先计算在 0.05 水平上所有预测因子将被正确检验为非统计显著的概率。在本例中,一个预测因子被正确地检验为非统计显著的概率是 0.95,那么全部 20 个预测因子被正确地检验为非统计显著的概率就是 0.95×0.95×0.95×…,即 0.9520 = 0.36。2 至少一个预测因子将被错误地验证为显著的概率,就是 1 减去所有预测因子都是非统计显著的概率等于 0.64。

2乘法规则指出,n 个独立事件一并发生的概率,是每个事件发生概率的乘积。例如,如果你我两人每人抛一次硬币,那么我们的硬币都正面向上的概率是 0.5×0.5 = 0.25。

上面介绍的问题涉及数据挖掘中的过拟合问题,即“模型拟合了噪声”。如果我们添加的变量越多,或者运行的模型越多,那么偶然出现“统计显著性”的概率就会越大。

在有监督学习任务中,会给出一个验证集,让模型评估从未见过的数据,从而降低了风险。在没有已标记验证集的统计学习和机器学习任务中,仍然存在由统计噪声得出结论的风险。

统计学提供了一些过程,可以在一些特定的场景下解决这个问题。例如,在比较多个处理组的结果时,我们可以提出多个问题。例如,对于处理 A、B 和 C,我们可以提出如下问题。

  • A 是否不同于 B ?
  • B 是否不同于 C ?
  • A 是否不同于 C ?

另一个例子是在临床试验中,我们可能想要在多个阶段查看某种治疗的效果。在每个阶段,我们都可以提出多个问题,每个问题都会增加被随机性愚弄的可能性。为了解决这一问题,统计学给出了一种校正(adjustment)过程。相比于单一假设检验所设置的统计显著性界限,校正过程设置了更严格的统计显著性界限。校正过程通常涉及根据校正校正检验的次数“划分 α 值”。这导致了对每次检验使用较小的 α 值,即对于统计显著性更严格的界限。Bonferroni 校正就是这样的一种过程,它仅是将 α 值除以观测次数 n

然而,多重比较问题超出了上面列举的这些高度结构化的案例,它与反复“数据疏浚”(dredging)现象有关。这一现象催生了“拷问数据”的谚语。也就是说,给定一组足够复杂的数据,如果你没有从中找到感兴趣的内容,那么说明你根本就没有尽力去查看数据。现在,可供使用的数据达到了前所未有的规模,在 2002 年至 2010 年期间,发表的论文数也近乎翻了一番。这为在数据中发现有意义的内容提供了很多偶然性,其中包括下列多重性问题。

  • 如何两两成对地查看多个组间的差异情况。
  • 对于以各种方式构建的数据子集,如何查看结果。例如,“我们并未在总体中发现显著的处理效果,但在 30 岁以下的未婚女性这一子集中,发现了显著的处理效果”。
  • 如何尝试使用多种统计模型。
  • 如何在模型中加入多个变量。
  • 如何询问多个不同的问题,即不同的可能结果。

 错误发现率

错误发现率这一术语,最初用于描述一组给定的假设检验错误地识别显著效果的比率。随着基因组研究的发展,错误发现率变得愈发有用。在基因测序项目中,会进行大量的统计检验。在这些情况中,错误发现率可以用在检验协议中,而单个错误“发现”是指假设检验的结果(例如,在两个样本之间)。研究人员也寻求通过设置检验过程的参数去控制一定水平的错误发现率。错误发现率也适用于数据挖掘的分类场景中,其中的错误发现是指对单个记录的错误标记,特别是将 0 误标记为 1(参见 5.4.2 节)。

出于多种原因,尤其包括“多重性”这一常见问题,更多的研究并不一定意味着更好的研究。2011 年,拜耳制药公司试图对 67 项科学研究进行复现时,发现只能完全复现其中的 14 项。有近三分之二的研究根本无法复现。

在任何情况下,针对高度定义和结构化的统计检验的校正过程过于特定,也不够灵活,因此通常并不适用于数据科学家。就多重性问题而言,数据科学家的底线做法如下。

  • 对于预测建模,可以通过交叉验证(参见 4.2.3 节)和使用验证集降低得到虚假模型的风险。虚假模型的效能在很大程度上是随机性的结果。
  • 对于其他过程,如果没有已标记的验证集可以验证模型,那么必须依赖如下原则。
    • 应意识到对数据的查询和操作越多,随机性可能发挥的作用就更大。
    • 使用重抽样和模拟等启发式方法,为随机性提供基准测试。这样就可以将观察到的结果与基准测试进行比较。

本节要点

  • 在研究工作或数据挖掘项目中,多重性(多重比较、多变量、多模型等)增加了仅根据随机对某个结果得出显著性结论的风险。
  • 对于涉及多重统计比较的情况(即显著性的多重检验),可以使用统计校正过程。
  • 在数据挖掘中使用结果变量带标记的验证样本,有助于避免得到误导性的结果。

拓展阅读

  • David Lane 的在线统计教程中简要介绍了如何使用 Dunnett 检验校正多重比较。
  • Megan Goldman 对 Bonferroni 校正做了更详细的解释,参见 http://www.stat.berkeley.edu/~mgoldman/Section0402.pdf
  • 要深入了解如何使用更灵活的统计过程调整 p 值,推荐阅读 Peter Westfall 和 Stanley Young 合著的 Resampling-Based Multiple Testing 一书。
  • 关于数据分区和在预测建模中使用验证样本的讨论,请参阅 Galit Shmueli、Peter Bruce 和 Nitin Patel 合著的 Data Mining for Business Analytics 一书的第 2 章。

3.7 自由度

在许多统计检验的文档和设置中,我们都能看到自由度这一概念。自由度应用于从样本数据计算得到的统计量,指可以自由变化的值的个数。例如,对于一个具有 10 个值的样本,如果知道了样本的均值以及样本中的 9 个值,那么第 10 个值也是已知的,即只有 9 个值是自由变化的。

主要术语

n,即样本规模

  在数据中,观测(也称为行或记录)的数量。

d.f.

  degrees of freedom(自由度)的简写。

自由度是很多统计检验的一个输入。例如,在计算方差和标准偏差时,分母 n-1 就是自由度。为什么要使用自由度?在使用一个样本估计总体的方差时,如果在分母上使用了 n,那么估计的偏差就会偏小。如果在分母上使用了 n-1,这时估计就是无偏的。

t 检验、F 检验等各种对假设的标准检验,占据了传统统计学课程或教材的大部分内容。在传统的统计学公式中,如果使用了经过归一化的样本统计量,自由度就是归一化计算的一部分,它确保了归一化的数据可以匹配适当的参考分布,如 t 分布、F 分布等。

自由度对数据科学是否也同样重要?答案是并非如此,至少就显著性检验而言并非如此。一方面,在数据科学中,我们只是保守地使用了正式的统计检验。另一方面,数据的规模通常会非常大,这使得对于数据科学家来说,分母是 n 还是 n-1 几乎没有区别。

但是在数据科学中,有一种场景是与自由度相关的,那就是在回归(包括逻辑回归)中使用因子化变量。如果在回归算法中使用了完全冗余的预测变量,那么算法就会产生阻塞。该问题经常出现在将分类变量因子化为二元标识(虚拟变量)的情况下。以星期为例,虽然一个星期有 7 天,但具体是星期几,其自由度为 6。一旦我们知道某一天并不是从星期一到星期六中的任意一天,那么它一定是星期天。因此,如果在回归中包括了星期一至星期六,就意味着也加入了星期天,而由于多重共线性(multicollinearity)问题,这将导致回归失败。

本节要点

  • 自由度是归一化检验统计量计算的一部分。它使得归一化后的结果可以与参考分布(例如 t 分布、F 分布等)进行对比。
  • 在回归中,为避免出现多重共线性问题,在将分类变量因子化为 n-1 个标识或虚拟变量时,应考虑其中隐含的自由度概念。

拓展阅读

几个介绍自由度的网络教程。

3.8 方差分析

如果我们不是要对两个组做 A/B 测试,而是要对比多个包含数值型数据的组(比如 A、B、C、D),这时可以使用方差分析(ANOVA,analysis of variance)。方差分析是一种检验多个组之间统计显著性差异的统计学方法。

主要术语

两两对比

  对于有多个组的情况,在两个组之间做假设检验(比如对均值)。

多项检验(omnibus test)

  一种可以测定多个组均值间方差的单一假设检验。

方差分解

  从整体统计量中(例如,从整体均值、处理均值以及残差中),分离出单个值的贡献情况。

F 统计量

  一种归一化统计量,用于衡量多个组均值间的差异是否会超过随机模型的预期。

SS

  sum of square(平方和)的简写,指与某一均值的偏差。

表 3-3 显示了 4 个 Web 页面的黏性,体现为在页面上停留的秒数。这 4 个页面是随机切换的,因此每位 Web 访问者都是随机地访问其中一个页面。每个页面总共有 5 位访问者,表 3-3 中的每一列都是一组独立的数据。第一个页面的首位访问者与第二个页面的首位访问者间并无关联。注意,在此类网络测试中,是无法完全实现经典的随机抽样设计的,即无法做到每位访问者都是从庞大的总体中随机选择的。一旦有访问者访问了一个页面,我们就记录该访问者。访问者之间可能存在一些系统性差异,具体取决于一天中的到访时间、一周中的到访日、一年中的到访季节、访问者的网络状况、访问者使用的设备等因素。在审核实验结果时,这些因素都应被视为潜在的偏差。

表3-3:4个Web页面的黏性(单位:秒)

 

页面 1

页面 2

页面 3

页面 4

 

164

178

175

155

 

172

191

193

166

 

177

182

171

164

 

156

185

163

170

 

195

177

176

168

平均值

172

185

176

162

总平均值

 

 

 

173.75

现在,我们面对着一个难题(如图 3-6 所示)。如果我们只对两个组做比较,那么事情非常简单,只需查看各组均值间的差异即可。对于 4 组均值,存在如下 6 种可能的组间比较。

  • 页面 1 与页面 2 相比
  • 页面 1 与页面 3 相比
  • 页面 1 与页面 4 相比
  • 页面 2 与页面 3 相比
  • 页面 2 与页面 4 相比
  • 页面 3 与页面 4 相比

图 3-6:4 组的箱线图显示了组间的显著差异

所做的两两比较越多,我们就越有可能被随机性愚弄(参见 3.6 节)。我们无须比较各个页面之间所有可能的对比方式,而是可以通过整体使用单一的多项检验来解决这一问题:“所有的页面是否具有相同的黏性?它们之间的差异是不是由于在 4 个页面间随机地分配了同一组会话时间所导致的?”

这里我们使用的检验过程就是方差分析。下面列出对 Web 页面黏性做 A/B/C/D 测试的重抽样过程,我们可以从中看到方差分析的基础所在。

(1) 将所有数据合并成一个箱子。

(2) 混洗,并从箱子中抽出 4 组样本,每组样本有 4 个值。

(3) 记录每组的均值。

(4) 记录 4 个均值间的方差。

(5) 重复第 2 步到第 4 步多次(例如 1000 次)。

这样,重抽样方差超过观测方差的比率,就是 p 值。

这里给出的置换检验比 3.3.1 节介绍的置换检验略微复杂。幸运的是,我们可以直接使用 lmPerm 软件包提供的 aovp 函数实现置换检验的计算。

> library(lmPerm)
> summary(aovp(Time ~ Page, data=four_sessions))
[1] "Settings: unique SS "
Component 1 :
            Df R Sum Sq R Mean Sq Iter Pr(Prob)
Page         3    831.4    277.13 3104  0.09278 .
Residuals   16   1618.4    101.15
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

输出结果中,Pr(Prob) 列显示的是 p 值,此例中为 0.09278。Iter 列显示了置换检验的迭代次数 3。其他列分别对应于传统 ANOVA 表中的相应列,我们将在本节后面介绍。

3实际运行 avop 函数时,给出的 IterPr(Prob) 会与本例中的输出值存在一定的差异。——译者注

3.8.1 F统计量

在比较两组的均值时,我们可以使用 t 检验替代置换检验。类似地,对于方差分析而言,存在一种基于 F 统计量的统计检验。F 统计量基于各组均值间的方差(即处理效果)与由于残差所导致的方差间的比率。比率越高,结果就越统计显著。如果数据遵循正态分布,那么根据统计学理论,统计量也应符合某种分布。由此,p 值也是可以计算的。

在 R 语言中,可以使用 aov 函数计算 ANOVA 表

> summary(aov(Time ~ Page, data=four_sessions))
           Df Sum Sq Mean Sq F value Pr(>F)
Page        3  831.4   277.1    2.74 0.0776 .
Residuals  16 1618.4   101.2
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

在输出结果中,Df 表示自由度,Sum Sq 表示平方和,Mean Sq 是“均方偏差”(mean-squared deviations 的简写),F ValueF 统计量。总平均的平方和等于总平均(与 0 的差值)平方后再乘以观测数 20。根据定义,总平均的自由度为 1,处理均值的自由度为 3(因为一旦设定了三个处理值,那么总平均也就设定了,这样另一个处理的均值就不会改变)。处理均值的平方和是处理均值与总平均间差值的平方和。残差的自由度为 20(即所有的观测值都可以变化),SS 是单个观测值与处理均值间差值的平方和。均方根(MS)是平方和除以自由度。F 统计量是处理的平方和除以误差的平方和。F 值仅取决于 F 统计量,并且参考标准的 F 分布,以确定处理均值间的差异是否会大于随机变异的预期差异。

 方差分解

数据集的观测值可以看成多个成分的总和。对于一个数据集中的任意一个观测值,可以分解为总平均、处理效果和残差。我们将这一过程称为方差分解

(1) 从总平均开始(对于 Web 页面黏性数据,总平均为 173.75)。

(2) 加入处理效果,它可能为负值(对于 Web 页面黏性数据,独立变量为 Web 页面)。

(3) 加入残差。残差也可能为负值。

这样,对 A/B/C/D 测试表(表 3-3)中左上角值(即 164)的方差分解如下。

(1) 从总平均开始:173.75。

(2) 添加处理(组)效果:组均值 172-173.75 = -1.75。

(3) 添加残差:164-172 = -8 。

(4) 得到结果:164。

3.8.2 双向方差分析

上一节介绍的 A/B/C/D 测试是一种“单向”方差分析,其中只有一个变化因子(组)。我们可以加入第二个因子,例如“周末与工作日”,并在每对组合上收集数据(周末 A 组、工作日 A 组、周末 B 组等)。这就构成一个双向方差分析。我们可以使用类似于单向方差分析的实现方法,通过识别“交互效应”实现双向方差分析。在确定了总平均效果和处理效果后,我们将各组中的周末和工作日观测结果分成子集,并找出各个子集的均值与处理均值之间的差异。

我们可以看到,方差分析(包括双向方差分析)是迈向完全统计模型(例如回归和逻辑回归)的第一步。完全统计模型可以对多个因子及因子的影响情况建模(参见第 4 章)。

本节要点

  • 方差分析是一种用于分析多组处理结果的统计过程。
  • 方差分析是对 A/B 测试中类似过程的一种扩展,用于评估各组之间的整体方差是否落在随机变异范围内。
  • 方差分析的一个有用结果是识别出与组处理、交互效果和误差相关的方差成分。

3.8.3 拓展阅读

  • 在 Peter Bruce 的 Introductory Statistics and Analytics: A Resampling Perspective 一书中,专门有一章介绍了方差分析。
  • George Cobb 撰写的 Introduction to Design and Analysis of Experiments 一书全面介绍了方差分析,适合阅读。

3.9 卡方检验

通常在 Web 测试中,需要一次检验多个处理,这超出了 A/B 测试的范围。卡方检验适用于计数数据,它可以检验数据与预期分布的拟合程度。在统计实践中,卡方统计量的最常见用法是与 r×c 列联表一起使用,以评估对变量间独立性的零假设是否合理。

卡方检验最初是由卡尔 • 皮尔逊(Karl Pearson)在 1900 年提出的。“卡方”(Chi)一词来自皮尔逊在文章中使用的希腊字母 ξ

主要术语

卡方统计量

  观测数据偏离预期程度的量度。

期望值 / 期望

  在某种假设(通常是零假设)下,我们期望数据能给出的结果。

d.f.

  自由度。

 

 r×c 表示“行数 × 列数”。例如,2×3 的表格具有两行三列。

3.9.1 卡方检验:一种重抽样方法

假设我们要对 1000 名访问者测试三种不同的标题:A、B 和 C,测试结果如表 3-4 所示。

表3-4:3种不同标题的Web检验结果

 

标题A

标题B

标题C

点击

14

8

12

未点击

986

992

988

从表 3-4 中可以看到,各标题之间存在明显的差异。虽然实际的点击量很少,但是标题 A 的点击量几乎是标题 B 的两倍。重抽样过程可以检验观测到的点击量是否与随机性可导致的程度有所差异。对于 Web 标题检验,我们需要知道点击量的预期分布。在本例中,我们使用了零假设,即所有 3 种标题具有相同的点击率,这时总体点击率为 34/3000。基于该假设,我们生成了如表 3-5 所示的列联表。

表3-5:3个标题在点击率相同(零假设)情况下的期望值

 

标题A

标题B

标题C

点击

11.33

11.33

11.33

未点击

988.67

988.67

988.67

我们用“Observed”表示实际观测到的情况,“Expected”表示采用假设情况下的期望值,皮尔逊残差(Pearson residual)R_p 的定义为:

R_p=\frac{{\rm Observed-Expected}}{\sqrt{{\rm Expected}}}

皮尔逊残差 R_p 测量了实际观测值与期望值之间的差异程度,如表 3-6 所示。

表3-6:皮尔逊残差

 

标题A

标题B

标题C

点击

0.792

-0.990

0.198

未点击

-0.085

0.106

-0.021

卡方统计量(chi-squared statistic)是皮尔逊残差的平方和,计算公式为:

\xi=\sum^r_i\sum^c_j R^2_p

其中,rc 分别是列联表的行数和列数。对于本例,卡方统计量的值为 1.666。那么它是否超出了随机模型中可能合理发生的情况呢?

我们可以使用下面给出的重抽样算法进行检验。

(1) 构造一个矩形,其中包含 34 个 1(点击数)和 2966 个 0(未点击数)。

(2) 对矩阵中数据做随机混洗,然后从中独立地抽取出三组样本,每组样本的规模为 1000,并计算每组样本中 1 的个数(点击数)。

(3) 找出各组中混洗计数和预期计数间的平方差,并将它们相加。

(4) 重复第 2 步和第 3 步多次(例如 1000 次)。

(5) 计算重抽样偏差的平方和超过观测值的频数,这就是 p 值。

使用 R 语言的 chisq.test 函数,就可以计算重抽样的卡方统计量。对于本例的 Web 点击数据,卡方检验计算为:

> chisq.test(clicks, simulate.p.value=TRUE)

        Pearson's Chi-squared test with simulated p-value (based on 2000 replicates)

data:  clicks
X-squared = 1.6659, df = NA, p-value = 0.4853

上述检验表明,结果完全是由随机性获得的 4

4正如文中所说,此处 p 值的计算具有一定的随机性,在实际运行示例程序时,得出的 p 值可能是一个与本例输出近似的值。——译者注

3.9.2 卡方检验:统计理论

统计学的渐近理论指出,卡方统计量的分布可以由卡方分布近似得到。适合的标准卡方分布取决于自由度(参见 3.7 节)。自由度与列联表的行数 r 和列数 s 有关。

自由度 =(r-1)\times(c-1)

卡方分布通常是偏斜的,右侧具有长尾。图 3-7 显示了自由度分别为 1、2、5 和 10 时的卡方分布情况。观测统计量在卡方分布中的位置越远,p 值越小。

图 3-7:不同自由度下的卡方分布(y 轴为概率,x 轴为卡方统计量的值)

R 语言的 chisq.test 函数在计算 p 值时,使用了卡方分布作为参考分布。

> chisq.test(clicks, simulate.p.value=FALSE)

        Pearson's Chi-squared test

data:  clicks
X-squared = 1.6659, df = 2, p-value = 0.4348

此例中,卡方计算所给出的 p 值略小于重抽样的 p 值。这是因为卡方分布只是对统计量实际分布的一种近似。

3.9.3 费舍尔精确检验

卡方分布可以很好地近似上面所介绍的混洗重抽样检验过程,但是它并不适用于计数非常低(达到个位数,特别是少于 5 个)的情况。在这种情况下,重抽样过程本身就能给出更精确的 p 值。事实上,大多数统计软件都可以实际列出所有可能出现的重排(置换)情况及其频数,进而确定观测结果的极端程度。这一操作被称为费舍尔精确检验(Fisher's exact test),命名源自于伟大的统计学家费舍尔(R. A. Fisher)。用 R 语言实现基本的费舍尔精确检验非常简单。

> fisher.test(clicks)

        Fisher's Exact Test for Count Data

data:  clicks
p-value = 0.4824
alternative hypothesis: two.sided

给出的 p 值为 0.4824,非常接近使用重抽样方法获得的 p 值 0.4853。

在一些情况下,虽然一些计数的值很低,但是其他的值相当高,例如转换率的分母值。由于难以计算所有可能的置换情况,这时需要做混洗置换检验,而非完全的精确检验。在上面介绍的 fisher.test 函数中,指定参数 simulate.p.value=TRUE(或 FALSE)就可以控制是否要使用这种近似,设置参数 B 的值可以控制迭代次数,而参数 workspace 限定了计算精确结果所使用的计算资源。

检测科学研究中的欺诈行为

一个有意义的例子来自美国塔夫茨大学的研究员 Thereza Imanishi Kari。1991 年,她被指控在研究中捏造数据,美国国会议员 John Dingell 也牵扯其中。案件最终导致她的同事 David Baltimore 辞去了洛克菲勒大学校长的职务。

虽然经过漫长的诉讼后,伊马西 • 卡里最终获得了豁免。但是在本案中,一个证据就来自统计学。该证据是根据实验数据中各个数字的预期分布得出的。鉴于每个观测数据都具有多个数字,调查人员关注了观测数据中各个数字的分布情况,预期是数字会遵循统一的随机分布。也就是说,数字是随机出现的,并且每个数字出现的概率相同(尽管首位数字可能主要取某个值,而末位数字可能会受到四舍五入的影响)。表 3-7 列出了实际数据中各个数字出现的频数。

表3-7:实验数据中各数字的出现情况

数字

频数

0

14

1

71

2

7

3

65

4

23

5

19

6

12

7

45

8

53

9

6

数据中 315 个数字的分布如图 3-8 所示。我们可以看到,这肯定不是随机出现的。

图 3-8 伊马西 • 卡里实验数据频数的直方图

调查人员计算了观测值与期望值的偏差情况。其中,期望值是每个数字在严格均匀分布中出现的频数,在此为 31.5。为了证明实际分布远远超出了正常随机变异的范围,调查人员使用了卡方检验(当然,也可以使用重抽样过程)。

3.9.4 与数据科学的关联

卡方检验的大多数标准用法(以及费舍尔精确检验),与数据科学的联系并不是十分紧密。在大多数数据科学实验中,无论是 A/B 测试,还是 A/B/C……测试,实验目标并不是要简单地确定统计显著性,而是要给出最佳的处理。对此,多臂老虎机算法(参见 3.10 节)可以给出更完整的解决方案。

在数据科学中,卡方检验(尤其是费舍尔精确检验)的一个应用是确定适当的 Web 实验样本规模。在此类实验中,尽管具有大量的页面展示,但是点击率通常很低。过小的计数率可能会导致实验无法得出确定的结论。这时可以使用费舍尔精确检验、卡方检验等检验方法,计算检验效能和样本规模(参见 3.11 节)。

在科学研究中,一些研究人员广泛地使用了卡方检验,以确定难以捉摸的统计显著性 p 值,进而使自己的研究成果适合发表。在数据科学的应用中,并不是将卡方检验或类似的重抽样模拟作为正式的显著性检验,而是更多地将此类检验方法作为一种过滤器,用以确定某个效应或特征是否值得进一步考虑。例如,此类方法可用于空间统计学和映射中,以确定空间数据是否符合某个指定的零分布,例如集中在某一区域的犯罪率是否大于随机性所允许的程度。此类方法还可以用于机器学习中的自动特征选择,通过判定各个特性的主要类是否符合随机变异的范围,即是否存在过高或过低的问题,进而确定特性的主要类。

本节要点

  • 统计学中一个常见的过程是检验观测情况与独立性假设是否一致,例如购买特定产品的倾向是否与性别无关。
  • 卡方分布是一种加入了独立性假设的参考分布。由观测情况计算得到的卡方统计量,必须与卡方分布进行对比。

3.9.5 拓展阅读

  • 20 世纪初,费舍尔提出了“女士品茶”(Lady Tasting Tea)这一著名的例子。时至今日,该例子依然简单有效地展示了费舍尔精确检验。在网上搜索“女士品茶”,就能发现一些很好的文章。
  • Stat Trek 网站提供了一个很好的卡方检验教程。

3.10 多臂老虎机算法

多臂老虎机算法(multi-arm bandit algorithm)是一种检验方法,尤其适用于 Web 测试。相比于传统的统计学实验设计方法,它实现了明显的优化,并且能更快地做出决策。

主要术语

多臂老虎机

  一种假想的老虎机,提供多个拉杆供用户选择,每个拉杆对应不同的收益,用于模拟多处理实验。

  表示实验中的一个处理,例如 Web 测试中的标题 A。

获胜

  通过实验模拟老虎机上的获胜,例如客户点击了链接。

传统的 A/B 测试需要根据特定的设计在实验中采集数据,去回答某个具体的问题,例如:“处理 A 和处理 B 哪个更好?”假定一旦问题得到解答,就结束实验,然后继续操作结果。

你可能已经发现,使用这一方法存在几个问题。首先,我们得到的答案并不是结论性的,即“效果未证明”。换句话说,实验结果可能会表明一个效果,但是我们没有足够的样本去证明所表明的效果,也就无法确定效果是否符合传统的统计标准。这并未回答我们应该做出什么决策的问题。其次,我们可能希望在实验得出结论前,就开始利用之前获得的结果。再次,我们希望能根据实验结束后获得的其他数据,去更改我们的决策,或是尝试其他的事情。传统的实验方法和假设检验方法可以追溯至 20 世纪 20 年代,这些方法是相当僵化的。随着具有强大计算能力的计算机和软件的出现,我们可以使用一些更强大、更灵活的方法。此外,数据科学(包括商业)并不十分关注统计显著性,而是更加关注整体工作和结果的优化。

多臂老虎机算法在 Web 测试中广受欢迎。它可以一次测试多个处理,相比于传统的统计设计,它能更快地得出结论。该算法以赌博中使用的老虎机命名,也称“单臂老虎机”,因为该算法在配置上实现了稳定地从赌徒那里掠取金钱。让我们想象一台有多个拉杆的老虎机,每个拉杆以不同的速率付款,这就是一个多臂老虎机,即该算法全称的由来。

我们的目标是尽可能赢取更多的钱。具体地说,越早识别并确定可以获胜的拉杆越好。但是挑战在于,我们并不知道各个老虎机拉杆的回报速率,只知道拉动老虎机拉杆的结果。我们假设无论拉的是哪个拉杆,每次“获胜”将得到相同数额的回报,不同之处只在于获胜的概率。进一步假设,我们初始尝试拉动每个拉杆 50 次,得到以下结果。

  • 拉杆 A:拉动 50 次,获胜 10 次。
  • 拉杆 B:拉动 50 次,获胜 2 次。
  • 拉杆 C:拉动 50 次,获胜 4 次。

一种极端的做法是:“拉杆 A 看起来像是赢家。因此让我们放弃尝试拉动其他的拉杆,一直拉动拉杆 B。”该做法充分利用了初始试验的结果。如果拉杆 A 的确更优,我们就可以尽早从中受益。但另一方面,如果拉杆 B 和拉杆 C 事实上更好,那么我们就会失去发现这一点的偶然性。另一种极端的做法是:“这看上去完全在随机范围内。让我们继续以均等的可能性拉动各个拉杆。”这一做法将给予拉杆 A 的替代者们一个充分展示的偶然性。但是在此过程中,我们的处理看上去并非最优。问题在于这一做法将持续多长时间?老虎机算法采用了一种混合的方法。一开始,我们更频繁地拉动拉杆 A,充分利用该拉杆初始看上去更优的结果。但我们并未放弃拉杆 B 和拉杆 C,只是较少地拉动它们。如果拉杆 A 持续表现优异,我们将继续少拉动拉杆 B 和拉杆 C,而是更频繁地拉动拉杆 A。而如果拉杆 C 的表现开始变好,拉杆 A 的结果开始变糟,这时我们可以减少拉动拉杆 A 的次数,转而频繁地拉动拉杆 C。如果其中一个拉杆被证明是优于拉杆 A 的,只是由于随机性导致它未在初始试验中显现出来,那么现在就有偶然性在进一步的检验中得以显现。

现在,我们考虑将算法应用于 Web 测试。这回测试的不再是多个老虎机拉杆,而是多个要在 Web 网站上测试的报价、标题、颜色等。用户可以点击(即商家的“获胜”),也可以不点击。初始,各个报价的展示是随机且平等的。随着测试的开展,如果一个报价开始优于其他报价,那么可以更频繁地显示该报价(即“拉动拉杆”)。但问题是,应该如何确定修改拉动速率的算法的参数?“拉动拉杆的速率”应该改成多少?何时改变速率?

下面给出了一个简单的算法,它被称为 A/B 测试的 ε- 贪心算法。

(1) 生成一个介于 0 和 1 之间的随机数。

(2) 如果随机数落在 0 和 ε 之间(其中,ε 是一个介于 0 和 1 之间的数字,通常非常小),则抛一次硬币(硬币是均匀的,即得到正反面的概率均为 50%)。

  a. 如果硬币正面向上,显示报价 A。

  b. 如果硬币反面向上,显示报价 B。

(3) 如果随机数大于或等于 ε,显示迄今为止具有最高响应率的报价。

ε 是控制该算法的唯一参数。如果 ε = 1,最终得到的是一个标准的简单 A/B 测试,每个实验对象在处理 A 和处理 B 之间随机分配。如果 ε = 0,最终得到一个纯粹的贪心算法。贪心算法无须做进一步的实验,将实验对象(Web 访问者)分配给表现最好的处理即可。

一个更复杂的算法使用了汤普森抽样(Thompson's sampling)方法。我们可以在每个阶段中做一次“抽样”(拉动拉杆),以最大化选择最佳拉杆的可能性。当然,我们并不知道哪个拉杆是最佳的,而问题完全在于此!但是随着每一次连续的抽取,我们都能获得收益,进而获得更多的信息。汤普森抽样采用了贝叶斯方法。它首先使用 Beta 分布假设回报的先验分布。Beta 分布常用于指定贝叶斯问题中的先验情况。随着每次抽取信息的累积,通过更新累积信息,我们就可以更好地优化下一次抽取,直至选取最优的拉杆。

老虎机算法可以有效地应对三种以上的处理,并趋向于最佳选择的方向。对于传统的统计检验过程而言,三种以上处理决策的复杂性,远远超出了传统的 A/B 测试,因此老虎机算法颇具优势。

本节要点

  • 传统的 A/B 测试基于随机抽样过程,会导致过度地使用非最优处理。
  • 相比而言,多臂老虎机算法改进了抽样过程,加入了在实验过程中学到的信息,减少了非最优处理的频数。
  • 多臂老虎机算法还有助于有效地应对两种以上的处理。
  • 多臂老虎机具有多种不同的算法,能够解决如何将抽样概率从非最优处理转移到(假设的)最优处理的问题。

拓展阅读

  • John Myles White 撰写的 Bandit Algorithms for Website Optimization 一书,对多臂老虎机算法进行了很好的概要介绍。怀特在书中还提供了 Python 代码,以及评估老虎机算法性能的模拟结果。
  • 关于汤普森采样的更多(技术性)介绍,参见 Shipra Agrawal 和 Navin Goyal 的论文“Analysis of Thompson Sampling for the Multi-armed Bandit Problem”。

3.11 检验效能和样本规模

在开展 Web 测试时,如何确定测试时间(即每个处理需要显示多少次)?尽管在网上可以找到很多关于如何进行 Web 测试的操作指南,但并没有一个很好的一般性指导。测试时间主要取决于实现期望目标的频数。

主要术语

效果规模

  在统计检验中,期望能检测到的效果的最小规模,例如点击率提高 20%。

检验效能

  给定样本规模,检测到给定效果规模的概率。

显著性水平

  在检验中所使用的统计显著性水平。

在计算样本规模时,其中一个步骤是询问:“一个假设检验能否真正揭示处理 A 和处理 B 之间的差异?”作为假设检验的结果,p 值不仅取决于处理 A 和处理 B 之间的真正差异,而且还取决于抽取中的运气成分,即如何选取实验组。但是,处理 A 和处理 B 之间的实际差异越大,这种差异被实验揭示的可能性也就越大;反之,如果差异越小,那么就需要更多的数据才能检测到这种差异。在棒球运动中,要区分打击率为 0.350 的击球手和打击率为 0.200 的击球手,并不需要很多的打数。而要区分打击率为 0.300 的击球手和打击率为 0.280 的击球手,则需要更多的打数。

检验效能是指在一定的样品特性(尺寸和变异性)下,检测到指定效果规模的概率。例如,我们可以假设在 25 个打数中,区分打击率为 0.330 的击球手和打击率为 0.200 的击球手的概率是 0.75。这时,效果规模就是 0.130(两者打击率上的差异)。而“检测”意味着假设检验会拒绝“无差异”的零假设,并得出具有实际效果的结论。因此,在两名击球手的 25 打数(n = 25)实验中,效果规模为 0.130,(假设)检验效能为 0.75,即 75%。

我们可以看到,检验效能中有几个步骤是可替换的,很容易加入多种所需的统计假设和公式(以指定样本的变异性、效果规模、样本规模以及用于假设检验的 α 级别等,以及计算检验效能)。事实上,已经有专门的统计软件可以计算检验效能。数据科学家在发表论文或其他工作中,大多不需要按部就班地经过各个步骤来计算检验效能。但是在某些场合下,可能还是需要收集一些 A/B 测试的数据,而数据的收集或处理会产生成本。这时,如果能大致地了解需要收集多少数据,将有助于避免出现收集了一些数据却不能得出结论性结果的情况。下面给出一种相当直观的替代做法。

(1) 从一些假设数据开始,这些数据代表了我们对所得数据的最佳猜测(可能基于先验数据)。例如,一个箱子,其中包含了 20 个 1 和 80 个 0,用于表示一名打击率为 0.200 的击球手,或者包含“在网站上花费的时间”的观测值。

(2) 在第一个样本中添加所需的效果规模,以创建第二个样本。例如,第二个箱子,其中包含了 33 个 1 和 67 个 0,或者在每个初始的“在网站上花费的时间”增加 25 秒。

(3) 从每个箱子中,抽取规模为 n 的自助样本。

(4) 对两个自助样本做置换(或基于公式的)假设检验,并记录两者之间的差异是否具有统计显著性。

(5) 重复第 3 步和第 4 步多次,并确定差异为统计显著的频数。这就是估计的检验效能。

3.11.1 样本规模

检验效能计算最常用于估计所需的样本规模。

例如,假设我们要查看点击率的情况,即点击次数占展示次数的百分比,并检验已有广告与新广告之间的对比情况。那么在此研究中,我们需要积累多少次点击?如果我们只关注能显示出巨大差异的结果(例如,50% 的差异),那么使用较小规模的样本就可以。另一方面,如果我们关注的是微小的差异情况,那么就需要规模更大的样本。一种标准方法是制定一个策略,指定新广告必须比现有广告好百分之多少(例如 10%),否则将保持现有的广告不变。这个目标就称为效果规模,它决定了样本的规模。

例如,假设当前的点击率约为 1.1%,而我们寻求 10% 的提升,即升至 1.21%。因此我们构建两个箱子,箱子 A 中 1 占 1.1%(例如,箱子中有 110 个 1 和 9890 个 0),箱子 B 中 1 占 1.21%(例如,箱子中有 121 个 1 和 9879 个 0)。我们先尝试从每个箱子中做 300 次抽取(对于广告而言,就是做 300 次“展示”)。假设我们第一次抽取的结果如下。

  • 箱子 A:3 个 1
  • 箱子 B:5 个 1

显而易见,任何假设检验都会认为这种差异(5 比 3)是在随机变异的范围之内。但是要让任意假设检验都能可靠地展示出差异情况,这里使用的样本规模(每个组中 n = 300)和效果规模(差异 10%)过小。

现在,我们可以尝试增大样本规模(试试展示 2000 次),并要求点击率提升更大的幅度(例如,提升 30% 而不是 10%)。

假设目前的点击率仍然是 1.1%,但我们现在它提升 50%,即提升到 1.65%。我们构建两个箱子,箱子 A 中 1 依然占 1.1%(例如,110 个 1 和 9890 个 0),而箱子 B 中 1 占 1.65%(例如,165 个 1 和 9868 个 0)。现在,我们尝试对每个箱子做 2000 次抽取。假设我们第一次抽取的结果如下。

  • 箱子 A:19 个 1
  • 箱子 B:34 个 1

对该差异情况(34 比 19)的显著性检验表明,尽管它比前面给出的差异(5 比 3)更接近显著,但仍然是“不显著的”。为了计算检验效能,我们需要多次重复上面的过程,或者使用可以计算检验效能的统计软件。但是我们的初始抽取表明,即便是要检测到 50% 的提升,广告也需要做上千次的展示。

总之,在计算检验效能或所需的样本规模时,有四个成分是可替换的。它们分别是:

  • 样本规模
  • 要检测的效果规模
  • 执行检验的显著性水平,即 α
  • 检验效能

如果指定了其中三个成分,那么就可计算得到第四个成分。最常见的情况是需要计算样本的规模,因此必须指定其他三个成分。下面的 R 代码使用 pwr 软件包,给出了涉及两个成分的测试,其中两个样本的规模相同。

pwr.2p.test(h = ..., n = ..., sig.level = ..., power = )

h= effect size (as a proportion)
n = sample size
sig.level = the significance level (alpha) at which the test will be conducted
power = power (probability of detecting the effect size)

本节要点

  • 在确定样本的规模之前,需提前确定要执行的统计检验。
  • 必须指定要检测效果的最小规模。
  • 还必须指定检测这一效果规模(检验效能)所需的概率。
  • 最后,还必须指定执行检验的显著性水平(α 值)。

3.11.2 拓展阅读

  • Tom Ryan 撰写的 Sample Size Determination and Power 一书,对此问题做出了全面的综述,适合阅读。
  • 针对该问题,统计顾问 Steve Simon 以叙事风格撰写了一篇引人入胜的文章“P. Mean: The first three steps in selecting an appropriate sample size”。

3.12 小结

实验设计的原则是,将实验对象随机置入进行不同处理的两个或多个组中。良好的实验设计可以让我们对每种处理的效果得出有效的结论。在实验中,最好包括一个“不做任何改变”的对照组。虽然正式的统计推断(包括假设检验、p 值、t 检验等)占据了传统统计学课程和教材的大部分时间或空间,但是数据科学并不需要这些形式化的内容。然而,我们依然需要认识到随机变异性对人类大脑的愚弄。直观的重抽样过程(包括置换和自助法),使得数据科学家可以衡量随机变异对数据分析的影响程度。

目录