心理学的七宗罪3:灵活的数据(Hidden Flexibility)

文 / brainnews
2017-11-30 12:50

心理学的七宗罪3:灵活的数据(Hidden Flexibility)Torture numbers and they will confess to anything.--- Gregg Easterbrook, 1999

Psychology is accumulated science. 意思就是,积累(accumulation)造就心理学的发展,积累也是大部分学科的特点。心理学甚少有在短时间内质的飞跃,但却都是长时间内量的积累,证据(evidence)的积累。那么,证据从何而来呢?证据来源于数据,而日日夜夜的“做科学”,便是我们收集数据,对数据做分析,尝试从数据中的得出结论的过程。因此,我们对数据的怎么处理非常重要。

Hidden Flexibility

Hidden Flexibility 是The 7 Deadly Sins of Psychology - A Manifesto for Reforming the Culture of Scientific Practice (by Chris Chambers). 七宗罪的其中之一,其可直译为“隐藏的灵活性”,在这里我翻译成“灵活的数据”。因为现在心理学中,很多科学家都抱着证明某个理论的希望,有意识或者无意识的折磨数据,让本身应该公开公正的数据变得灵活,期待它能吐出些什么,比如p < 0.05。

p value & NHST

这里,我们先回顾一下p值和NHST(null hypothesis significance testing)

(之前有关p值和NHST的两篇文章 p<0.005?, p值的认识误区)。

NHST的精神就在于,假设在H0(null hypothesis)成立的前提下,你收集到手头上的数据,或者更加极端的数据,的概率是多少。

用图片表示就是:

心理学的七宗罪3:灵活的数据(Hidden Flexibility)(此图来自D. Laken Statistical Inference课程截图,课程coursera主页:Coursera | Online Courses From Top Universities. Join for Free。Open Science Club也发表过陈绍庆老师为这个课程做过的中英文字幕以及其使用指南:「提昇你的統計推論功力」中文資源使用說明及學習指南。这个课程我也是强烈推荐。有少许统计基础的同学可以借助这节课提示自己对统计的认识。 )

而我们通常设定的界限,0.05(一类错误概率/假阳性错误概率),就用于和我们计算出来的p值作比较。倘若p < 0.05, 我们就拒绝认为H0成立。

因此,对于很多心理学家来说,从数据中得到p < 0.05是非常重要的,会竭尽所能折磨数据来得到这个结果。我们称之为p-hacking。

p-hacking

p-hacking 中情节最轻的就是把数据中所谓的异数(outliers)剔除掉。

那么问题来了,什么是异数呢?

我记得我博二的Bayesian数据课,有一个研究生说,异数是三个正负方差以外的数据。我当时就没忍住喷了他说:“但是一个data set永远都会有三个正负方差意外的数据点啊,你一直剔除剔除不完的。正确的答案是,异数不存在的”。

但其实事实证明,还是存在的。不过与其说是异数,倒不如说是没有用的数据。例如在我很多研究人类记忆的实验中,真的会有被试给出0的准确率。而我对于这些没有存在意义的数据,通常就会狠心删掉不纳入接下来数据分析的考虑范围。但是!重点来了!我有pre-registration的好习惯,我在收集数据之前就已经告知众人,0的准确率的被试我就不要了。

更为严重的p-hacking,就是随意剔除数据,随意漏掉整个实验组的数据,随意加协变量,随意定义或增加样本数量,或者对数据做100个数据分析,但是只报告其中一个得出显著的结果。在这里,我们就“随意定义或增加样本数量”细说。

通常每个cell你会招募多少被试呢?在数据课,我们都学过,通常30的样本量,可以使得我买的样本分布接近population。

那现在,假设我收集的30个被试的数据

(以下代码皆为R语言)

X <- rt(30,df=5) #data from group x

Y <- rt(30,df=5) #data from group y

然后做了一下t.test,发现p = 0.624 > 0.05.

t.test(X,Y)$p.value #get p value of t.test

um,怎么办呢?可能我收集的数据不够多吧。或许再多点被试,我就能有小于0.05的p值了。

我就从30的样本开始,一个一个数据的收集

#make a function where I extract p value of a two sample t-test

p <- function(n) p <- t.test(rt(n,df=5),rt(n,df=5))$p.value

#start with 30, till sample size of 120, I do t-test whenever I collect one more data point

addSs <- seq(30,120,1)

每收集到一个数据,我就做一次t-test

#make a p hacking function

phack1 <- function(addSs){

ps <- Vectorize(p)(addSs)

return(ps)

}

#get pvalues

pvalues <- phack1(addSs)

如果我把所有t-test的p值画出来的话,

#plot

plot(addSs,pvalues,type="l",xlab="Sample Size")

#draw a red line of p=0.05

abline(h=0.05,lty=2,col="red")

我可以看到:

心理学的七宗罪3:灵活的数据(Hidden Flexibility)p值在样本量为42的时候,整个data set成功的突破0.05,我可以拒绝承认H0为真了!于是我只报告这42个数据,报告p<0.05.

这就是p-hacking。

真实存在的p-hacking

p-hacking并不是我们杞人忧天想出来的,而是真实存在的。

在过去一段时间,心理学整个科研氛围还非常不透明的时间,这样的行径是非常常见的。根据Leslie John and colleagues (2012)的一个调查显示,在超过2,000个美国心理学家中,100%至少一次做过p-hack,100%在做了数据分析后再继续收集数据,75%没有上报所有收集过数据的实验组,超过50%在数据“显著”之后停止收集数据。

在2012年,E.J.Masicampo & Daniel Lalande 首次分析了在三个心理学期刊中发表数据的p值,一共3627个。他们发现,刚刚小于0.05的p值很多。2013年,Nathan Leggett & colleagues 还发现,从1965年到2005年,刚刚小于0.05的p值的数量一直在增长。其实这个完全可以理解,由于软件的发展和电脑计算能力的提高,比如SPSS 和R,我们再也不需要手算来分析数据。既然分析数据变得简单,也越来越多的心理学家找偏门来得到显著结果。

为什么p-hacking存在?

(详情见系列文章1:偏见/bisa)

confirmation bias (确认偏见)

也许是人的天性,即使是科学家,也会无法完全客观的看待数据和证据,而尝试证明自己的想法。

之前有一次准备talk的时候,模拟了一次之后,导师有点不开心的看着我,问:“Sharon,你知不知道你刚刚用了多少次prove和confirm?” 我一听,就知道肯定说错了,回答说:“不记得了。我以后用suggest和indicate”

我们是科学家,不是律师。我们收集数据,写论文,并不是刻意寻找证据来证明一个观点,而是展示证据,用尽可能客观的方法解释证据,得出结论。

publication bias (发表偏见)

但是从来没有课教科学家怎么作弊怎么p-hacking的(除了12月我的工作坊会带大家玩一次(兴奋脸)),科学家们的confirmation bias和这种坏习惯是怎么养成的呢?这很得益于心理学界,甚至科学界的“publish or perish”,以及大部分期刊发表显著的结果的偏好。如果发表论文是年轻学者的唯一出路,那么不惜一切地发表,也逐渐演变成迫不得已的常态(new normal)。

怎么办呢?

支持并实行开放科学,open science,就是最有效的方法。

有关 pre-registration 和 data sharing 的细节之前都说过了。

针对于折磨数据这一点,pre-registration有效就在于,科学家必须在收集数据之前就说好实验设计,实验组数量,样本数量和数据分析方式,大大的限制了p-hacking的操作实施。

而data sharing就有效于,让独立第三方或者审稿人拿到原始数据,对数据进行自己的分析,看看作者有没有随意剔除数据,看看其他的数据分析方式是不是可以得到截然不同的结果,同样可以监察p-hacking的行径。

还有什么方法呢?

摒弃NHST,推广Bayesian 贝叶斯数据分析 (Frequentist vs Bayesian 2 之 不,是你的贝叶斯 )

首先,Bayesian和NHST对概率的看法不一样。NHST属于frequentist,是建立在一个一件事情可以发生无数次的世界里。但是这个是不合逻辑也不现实的,因为我们手头的数据是样本数据,永远是有限的。而Bayesian是建立在数据存在的世界里,我们只需要直接量化数据,观察数据支持不同观点的证据多少就可以了。

其次,和NHST不一样的是,Bayesian走的是直接纯粹的数据 --> 结论路线。NHST需要假设H0成立,然后看得到此数据或者更极端的数据的概率。而Bayesian Statistics完全而且完美的运用了你对一个理论的信念(prior belief)和你收集的数据(data或likelihood),从中得出结论(posterior belief),告诉你这个理论存在的概率或者这个理论模型参数的分布。这也是贝叶斯最大的优势——它完全符合我们做科学研究的逻辑和目的,我们想要的就是通过观察、收集数据,来更新我们对某一理论的认识和信念(belief)。

与此同时,和NHST不一样的是,从Bayesian中,我们永远不会从数据中的得出H0成立与否的两断决策,例如p < 0.05,我们只会得出数据支持H0或者支持H1的证据多少。而且更重要的是,这个量化的证据,并不受数据点先来后到的影响。

从这几点看,使用推广贝叶斯数据分析对控制住这一宗罪,限制数据灵活性,开放科学有重要意义。

Sharon

写于2017年11月5日