《统计会犯错——如何避免数据分析中的统计陷阱》一第1章 统计显著性简介

简介:

本节书摘来自异步社区《统计会犯错——如何避免数据分析中的统计陷阱》一书中的第1章,第1.1节,作者【美】Alex Reinhart(亚历克斯·莱因哈特),更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 统计显著性简介

统计会犯错——如何避免数据分析中的统计陷阱


a5d1d6e80e5a4a2d69339c8c3d2f4c67eef844be

许多实验科学都会涉及测量差异。一种药物是不是比另一种药物效果更好?具备某一基因的细胞是不是能比其他细胞合成更多的酶?一种信号处理算法是不是比另一种算法能更好地检测脉冲星?一种催化剂是不是比另一种催化剂更能有效地加快化学反应?

我们可以用统计学来判别这些不同类型的差异。通常来说,我们观测的是由于巧合或随机变化导致的差异,所以当观测差异大于随机产生的差异时,统计学家称之为“统计意义上的显著区别”。首先,我们来看如何判别。

p值的力量
假设你在测试一种新的感冒药,其中新药可以确保一天之内消除所有感冒症状。为此,你找到20位感冒患者,给一半患者服用新药,其他人服用安慰剂。然后记录他们的感冒时长,找到服药与未服药患者的平均感冒时长。

这种测试有问题吗?进一步分析,不是所有的感冒都是同一种类型。平均来说,感冒时间通常要持续一周。但有一些感冒会持续两周甚至更久时间,也有一些持续几天就好了。可能服用新药的这一组患者都是较短时长的感冒,很快就好了。那么,又如何证明是药物起作用了,而不是这些患者运气好呢?

统计假设检验给出了解决办法。如果你知道典型的感冒时间 的分布,也就是说有多少患者得短期、长期和平均时长的感冒,据此可以给出一组随机样本的患者的感冒时长比平均时长更长或更短的概率。那么假设检验(或显著性检验)就可以回答这个问题:即使药物完全无效,那么试验产生以上观测结果的可能性有多大?

如果只对一个人进行药物测试,那么他的感冒时长比平均时长更长或者更短,都是不足为奇的。大部分感冒并不是非常理想的平均水平。但是如果对1000万个患者进行测试,而所有患者都是短期感冒,这种情况就不太可能是巧合了,更有可能是药物的效果。

科学家对这种直觉进行量化,给出了一个概念—— p值。

p值是在假设药物效果没有真实差异的情况下,差异等于甚至大于实际观测差异的概率[1]。

例如,你给100个患者服药,发现他们的平均感冒时长比对照组少一天,这时p值就是在药物无效的假设下,“他们的感冒时间比对照组少一天”这种情况完全是出于巧合的概率。你可能会说,p值依赖于效果大小,试验组感冒时间比对照组少一天的情况会比少四天的情况更为常见,也与试验组的患者数目有关。

记住,p值不是用来测度你多么正确,或者这个差异有多重要。反之,它是对“意外”的测度。如果假设药物无效,那么也只能用运气来解释两组的区别。然后p值越小,试验结果是意外或因为运气的可能性越大——或者说你的假设就是错误的,新药的确有效。

如何运用p值来解释“这些组之间是否有差异”?通常的经验法则是:当p<0.05时,区别是“统计显著”的。选择0.05不是出于特别的逻辑或统计的原因,而是在多年的使用过程中形成的科学惯例。

注意到应用p值时,假设试验各组没有区别。这是显著性检验的一个反直觉的特征:如果想要证明药物有效,就去证明数据不支持药物无效。因此,p值可以扩展到任何一种用数学表示某个要推翻的假设的情形。

但是p值也有它自身的局限。记住,p值是指对意外的测度,一个较小的p值意味着更加意外。它不是影响大小的测度。可以通过测量大的影响获得一个小的p值(这种药物可以使人的寿命延长4倍),或者用较大的确定性测量一个较小的影响。因为一种药物或干预通常是有一些效果的,所以可以收集足够的数据,检测极其微小但相对不太重要的差异,然后得出统计显著性的结果。Bruce Thompson写道:

统计显著性检验可能包含一个套套逻辑(tautology)[2],研究人员已经收集了数百个产品“失效”的测试数据,然后通过一个统计检验来评价产品是否真的“失效”。而事实上,研究人员早已知道结果,因为他们收集数据时就知道数据都是已经“失效”的。考虑到知识的累积,这一套套逻辑已经造成了相当严重的后果1。
简而言之,统计显著性不意味着任何实际意义的显著性。统计显著性并不会给出太多信息。一个统计显著的区别可能只是噪声,或者体现了真实的影响,但是这一影响需要更多的数据才能确定。

没有数学工具可以判断出假设是真是假;也可以考虑假设与数据是否一致。如果数据太少或者不清楚,那么结论也就不确定了。

统计的心理暗示
p值局限性的背后还有一些关键核心的问题。假设运气(而不是药物或者干预)是实验中唯一因素,p值是获得结果等于或大 于观测值的概率。这就意味着p值迫使你去质疑从未发生过的结果——也就是比你的结果更极端的结果。获得这样的结果的概率有赖于实验设计,这使p值具有“心理暗示特征”:两种不同的实验设计可以产生相同的观测数据,但会得到不同的p值,因为未观测的数据是不同的。

假如我连续问你12个关于统计推断真假的问题,你正确回答了9个。我要检验假设:你是否是依靠随机猜想答对了这些问题?为此,我要计算你依靠随机猜想答对至少9个问题的概率。假设你等概率地选取“正确”和“错误”,计算得p=0.073[3]。因为p>0.05,很有可能你就是随机猜的答案。若确实如此,你将会在规定时间内以7.3%的概率答对9个甚至更多的问题2。

但也可能我并不是只打算问你12个问题。如果我有一台电脑可以无限地产生问题,直到你答错3个。现在我要计算在15、20、47个问题之后你答错3个问题的概率,甚至是在175、231个问题之后你仍旧没有答错3个的概率。计算可得p=0.033。因为p<0.05,我的结论就是:你依靠随机猜想不太可能得到这样的结果。

这是非常麻烦的:两个试验收集到相同的数据,但是却有不一样的结论。莫名其妙,p值竟然能懂你的意图!

奈曼-皮尔逊检验
为了更好地理解p值,我们要了解一些统计学的历史。统计显著性检验有两个主要分支。关于统计重要性检验的思想主要有两个流派。第一个分支是费希尔(R.A.Fisher)于1920年提出。费希尔将p值看作理解一个数据集是如何令人意想不到的一种简便、非正式的方法,而不是假设检验的严格正式流程中的一个环节。只有当p值与试验者的先验经验以及专业知识结合时,它才能更好地解释新观测的数据。

在费希尔的著作问世以后,奈曼和皮尔逊(Jerzy Neyman 和Egon Pearson)尝试解决了一些无法解决的问题。例如,在感冒药物有效性检验中,只要你能从比较中得到 p 值,你就可以尝试通过均值、中位数或者其他任何统计量,来比较两个对照组的水平。但是你如何知道哪种选择是最好的?这个最好的选择对假设检验又意味着什么?

在科学研究中,控制假设检验的两类错误是至关重要的:第一类错误(false positives),就是将无效说成有效(取伪);第二类错误(false negatives),则是将有效判断成无效(弃真)。在一定程度上,第一类错误和第二类错误是一枚硬币的两面。如果我们比较激进,则容易犯第一类错误;如果我们过于保守,第二类错误会主动找上门来。

奈曼和皮尔逊发现虽然不能同时完全消除两类错误,但是可以给出一种规范的决策过程来确保犯第一类错误的可能性只在预先确定的比率下发生。他们将这个比率称为显著性水平 α(false positives rate),试验者可以依据他们的经验和期望基础上设置合适的α。举例来说,如果我们先要设立10%的第一类错误率,就令α等于0.1。但是如果我们希望决策更加保守,那么就可以将α设置为0.01或者更小。为了比较哪种检验过程是最好的,我们可以考察在给定α的条件下,哪一种检验过程犯第二类错误的比率是最低的。

实践中应该怎么做呢?在奈曼-皮尔逊体系下,我们定义一个原假设,即一个“无效”(效应为零)的假设,同时定义一个备择假设,如“效应大于零”。然后构建一个检验去比较这两个假设,并且决定在原假设正确时我们期望得到怎样的结果。我们利用 p值来实施奈曼-皮尔逊检验程序,即如果p<α,则拒绝原假设。不像费希尔的检验过程,此方法没有将注意力放在揭示任何一个特定的试验证据的强度,而只关心决定原假设是否被拒绝。p值的大小,除了“拒绝原假设”,无法用来比较试验或得出其他任何结论。正如奈曼-皮尔逊所言。

我们倾向于认为只要涉及一个特殊的假设,不存在建立在概率理论基础上的检验能够单独提供关于这个假设正确或者错误的有价值的证据。

但是,我们可以从另一个角度审视检验的目的。我们不希望知道每个独立假设的真假,但是可以探索引导我们关于他们行为的规则,接下来就要保证在长期的经历中我们不会常常犯错3。
虽然奈曼和皮尔逊的方法在概念上与费希尔的方法不同,但是实践科学家常常将两者合并4,5,6。奈曼和皮尔逊的方法就是用一个预先选定的p值门槛确保长期的第一类错误率获得“统计显著”。但是假定你进行一次试验得到p值为0.032,若门槛为p<0.05,这个时候便是统计上显著的。但是若门槛缩小成p<0.033,你的结果还是统计显著的。因此说我的第一类错误率为3.2%是十分诱人的,实际上这是常见的一种误解。

这种解释存在问题。仅仅通过一次试验不能得到第一类错误率。它是由检验过程决定的,而不是由一次试验的结果得出的。所以当你用一个检验过程来获得一个长期的第一类错误率α,不管结果是怎么样的,你都不能说每一次试验都会有一个真实的 p 值和对应的第一类错误率。

构建置信区间
显著性检验会得到广泛关注,“统计显著”这一词语也成为流行词典的一部分。尤其在生物与社会科学中,研究结果常常用 p值展现出来。但是 p 值不是评价证据权重的唯一方法。置信区间可以回答和 p 值相同的问题,并且它的优势是提供了更多的信息而且可以直接阐明。

一个置信区间包含一个点估计以及这个估计的不确定性。例如,一种新实验药物可以将感冒平均时间缩短为36h,并且对应的95%的置信区间为24~48h(置信区间是平均时间,每个患者感冒的时间有很大的区别)。如果我进行100次相同的药品实验,那么将有95个置信区间包含我们感兴趣的真实值。

置信区间可以将结论中的不确定性定量,而且比不能说明任何效应量的 p 值提供更多的信息。如果想检验这个效应量是否显著区别于零,可以构建一个 95%的置信区间来检验这个区间是否包含零。在这个过程中,我可以额外地知道我的估计有多么精确。如果置信区间太宽,那么我需要收集更多的数据。

例如,如果进行一项临床试验,我可以构建一个预示我的用药量减少15%~25%的置信区间。这个效应是显著的,因为这个区间不包含零,并且可以用我了解的疾病临床知识来评价差别的重要性。当我们使用 p 值时,这一步是非常重要的——当还没有在上下文进行评价时,就不要将统计结果吹嘘为一项重大发现。若这一用量是无害的,则15%~25%的改进是不重要的。不过话说回来,对于像能够引起人体自燃这样的征兆,做出任何改进我可能都会激动。

如果你能以置信区间而不是p值表达你的研究结果,那么你应该这样做7。置信区间回避了大多数与p值有关的细微解释,这使得结果更加清晰。那么为什么置信区间却不是很流行呢?在试验性的心理研究杂志中,97%的研究报告包含显著性检验,但是只有10%曾经报告置信区间,并且其中大多数没有利用置信区间作为他们研究结果的支持证据,而是依赖显著性检验8。甚至久负盛名的《自然》杂志不例外:89%的文章没有任何置信区间和效应量来报告p值,这使得他们的研究结果不能在上下文中得到解释9。一个杂志社的主编说道“p值就像蚊子”,它们无处不在,而且不管我们怎么打,用什么药喷都无法驱逐它们10。

关于置信区间报告很少的原因可能是因为他们区间宽的令人尴尬11。另一个原因是论文同行评审的压力太大,最好像其他学科那样做统计,否则评审者会拒绝你的论文。或者可能是关于 p值的困惑掩盖了置信区间的好处。或者是在统计课程中过度强调假设检验意味着大多数科学家不知道怎么样计算和使用置信区间。

有一段时间杂志主编试图强制报告置信区间。Kenneth Rothman是20世纪80年代中期美国公共健康杂志的副主编,以强硬措辞的信件进行意见回复。

所有关于统计检验以及统计显著性的推断都应该从论文中删除。我要求在删除p值的同时也要删除关于统计显著性的评论。如果你不赞成这一标准,你认为应该自由地进行辩论,或者你根本不理会这些而认为这是我的错误观点,那么请你在别处发表12。
在Rothman作为副主编的3年任期内,那些仅仅报告p值的论文数量急剧下降。在他离职以后,显著性检验复苏,虽然下一任主编也鼓励研究者要报告置信区间。但是尽管报告了置信区间,很少有研究者在论文中讨论它们或者运用它们得出结论,反而仅仅将它们作为显著性检验12。

Rothman还创办了《流行病学》杂志,非常支持统计报告。早期,对显著性检验熟悉的作者会在报告置信区间的同时报告p值,但是10年以后,这些作者的态度就发生了很大的变化,仅仅报告置信区间成为一种常见的实践12。

也许那些有勇气的杂志编辑可以以 Rothman 为榜样,并且在他们的领域中改变统计实践。

[1] 是当原假设为真时,比所得到的样本观察结果更极端的结果出现的概率(wiki)。更多讨论参见“统计之都”中相关内容(http://cos.name/2008/12/ p-value-notes/)。

[2] 辑(tautology):是指一些言论,在任何情况下都不可能是错的。说得更严谨一点,套套逻辑不可能被想象为错!举一个例子,假若我说:“四足动物有四只脚。”这怎可能会错呢?句子内的后半部重述了前半部的意思,即使我们花很大工夫也不可能想象到它在怎样的情况下会是错的。在地球上、火星上它不会错,在宇宙任何地方它也不会错。这句话的一般性确实厉害,但内容究竟说了些什么?其实什么也没有说!我们想破脑袋也知道是对的,但不知其内容(转自百度百科,引自张五常《经济解释》神州版卷一第一章第三节《特殊理论与套套逻辑》)。

[3] 我使用二项分布计算出这个结果,在下节中,我还会使用不同的分布,如负二项分布。具体概率分布和计算细节不是本书关注的重点,我们更感兴趣的是如何解释_p_值,而不是如何计算_p_值。

相关文章
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言
R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言
124 1
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
用Python进行健康数据分析:挖掘医疗统计中的信息
【4月更文挑战第12天】Python在医疗健康数据分析中扮演重要角色,具备数据处理、机器学习、可视化及丰富生态的优势。基本流程包括数据获取、预处理、探索、模型选择与训练、评估优化及结果可视化。应用案例包括疾病预测、药物效果分析和医疗资源优化,例如使用RandomForestClassifier进行疾病预测,Logit模型分析药物效果,以及linprog优化医疗资源配置。
|
1月前
|
存储 数据采集 数据挖掘
python数据分析——数据分类汇总与统计
数据分类汇总与统计是指将大量的数据按照不同的分类方式进行整理和归纳,然后对这些数据进行统计分析,以便于更好地了解数据的特点和规律。
55 1
|
1月前
|
机器学习/深度学习 算法 数据挖掘
python数据分析——数据分析的统计推断
数据分析的统计推断是科学研究中的重要环节,它通过对样本数据的分析,对总体参数进行估计,并对假设进行检验。这一过程旨在从数据中提取有意义的信息,为决策提供科学依据。 在统计推断中,我们通常会遇到两类问题:参数估计和假设检验。参数估计是通过样本数据对总体参数进行点估计或区间估计。点估计是对总体参数的具体数值进行预测,而区间估计则是给出一个包含总体参数的置信区间。这两种估计方法都基于大数定律和中心极限定理,保证了估计的准确性和可靠性。
40 0
|
2月前
|
数据可视化 数据挖掘 大数据
Python中的数据分析与可视化库Matplotlib简介
在当前大数据时代,数据分析和可视化成为了技术领域的热门话题。Python作为一门流行的编程语言,拥有丰富的数据处理和可视化库,其中Matplotlib是其中的佼佼者。本文将介绍Matplotlib库的基本概念、功能特点以及在数据分析与可视化中的应用。
28 0
|
4月前
|
数据可视化 数据挖掘 Python
【数据分析与可视化】Seaborn库简介及风格设置详解(图文解释 超详细)
【数据分析与可视化】Seaborn库简介及风格设置详解(图文解释 超详细)
77 1
|
4月前
|
算法 数据挖掘 API
贝叶斯统计在Python数据分析中的高级技术点:贝叶斯推断、概率编程和马尔科夫链蒙特卡洛
贝叶斯统计在Python数据分析中的高级技术点:贝叶斯推断、概率编程和马尔科夫链蒙特卡洛
46 1
贝叶斯统计在Python数据分析中的高级技术点:贝叶斯推断、概率编程和马尔科夫链蒙特卡洛
|
5月前
|
Web App开发 数据挖掘 iOS开发
84 网站点击流数据分析案例(统计分析-PV统计)
84 网站点击流数据分析案例(统计分析-PV统计)
47 0
|
9天前
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
14天前
|
存储 数据挖掘 数据库
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】