分类目录归档:试验设计

传统试验设计方法和理论

COS每周精选:随机试验处处坑

By 陈丽云

自从Fisher大神种地种出心得来,搞出了随机对照试验,这样的简单有效方法就如春风一般席卷了五湖四海。很多时候,你不整出来个控制的分毫不差的随机试验,再好的契合直觉的结果也没人相信。人们对于因果关系的定义,好像一瞬间都集中在了统计分析的一致性上…显著吗?亲,几个星号?(注:Fisher的炫目人生和随机试验的来龙去脉,请参见书籍《女士品茶》(《The Lady Tasting Tea——How Statistics Revolutionized Science in the Twentieth Century)》)。

然而孩子们,醒醒吧,以为你会个随机试验世界都完美了?果然是图样图森破,sometimes naïve。现实世界里面的随机试验可不简单是你在实验室里面那么舒舒服服的摆弄仪器就可以搞出来的。一旦试验的对象是人,一切都皆有可能。来来,先别急着算什么 p-value 这种东西,随机试验(业界俗称A/B Test)的坑那可是一个又一个,先跟着微软的专家们来玩玩踩雷,然后听听他们的血泪诉说吧!别以为他们西装革履或者拖鞋T恤的坐在看起来很气派很高端的办公室里面,一样是一个小坑陷一个,一个大坑坑一群。正所谓,随机试验处处坑,坑爹也坑娘,专家一样坑。

原文章:Trustworthy Online Controlled Experiments: Five Puzzling Outcomes Explained, by Ronny Kohavi with Alex Deng, Brian Frasca, Roger Longbotham, Toby Walker, Ya Xu from Microsoft.

大坑1:Bug会提高收入?

曾经有一次,Bing的技术团队不小心搞出来一个bug,导致分在test组里面的用户查询到的结果都是非常差的,control组返回的是没有变化正常的结果。结果当他们去评估的时候,发现有两个指标格外的高:人均查询量(排除重复查询语句)和人均收入,前者上升了10%而后者上升了30%! 继续阅读COS每周精选:随机试验处处坑

计算机试验简介

很早就想为COS写一篇关于计算机试验的东西。可是始终也未敢动笔,觉得自己才疏学浅,生怕写得偏颇。但是另外一方面,又觉得这是COS上一块空白的话题,没有人提及过。今天写这篇文章,主要是为抛砖引玉,另外丰富一下主站文章的题材。

在这篇文章中,我想大致介绍一下计算机试验的设计以及建模,另外会有一些R中专门做计算机试验的包的相关介绍。

目前,比较流行的计算机试验设计与建模的教材有两本(似乎也只有这两本)。一本是Thomas J. Santner, Brian J.Williams以及William I.Notz合著的,Springer2003年出版的《The Design and Analysis of Computer Experiment》。另外一本是Kai-Tai Fang ,Runze Li以及Agus Sudjianto合著的,2005年由Chapman&Hall出版的《Design and Modeling for Computer Experiment》。所谓的计算机试验(computer experiment),是相对于传统的实体试验(physical experiment)而言的。我们都知道,实体试验的数据(比如农业试验,生物试验等得到的数据)总是会受到随机误差的影响,因此在实体试验设计中,引入了“重复”的原则,目的就是要通过重复的试验,减小随机误差对于分析的影响。(关于实体试验的设计以及建模,国内外已经有很多教材讨论这些,我相信大多数统计专业的同学所学习的试验设计入门课程都是在学习实体试验的设计以及数据分析。)与此相对的,计算机试验得到的数据并不受到随机误差的干扰。因为一段固定的代码,在计算机上无论运行多少次,得到的结果都是一样的。

计算机试验,通常比实体试验包含了更多的变量,用于研究特别复杂的系统,比如航天探测器。对于这些特别复杂的系统,往往需要用一个更加简单的拟模型(meta model)来逼近。计算机试验的目的之一,就是要通过在计算机上,利用代码模拟某个复杂的设备或者某个过程,得到了试验的数据之后,通过分析建模,从而得到一个相对更简单的模型,被称为拟模型,拟模型是非常有用的。

由于计算机试验具有复杂性,以及输出结果的确定性,做计算机试验收集数据的时候,我们需要一些特殊的设计。

试验设计,总是和模型紧密相联系的。事实上,试验设计是一种收集数据的策略。在实体试验中,当我们需要比较某种因子不同水平之间的差别,我们通常会选用因析设计。因析设计事实上就是和因子模型相对应而产生的收集数据的策略。另外,所谓的最优设计,也是相对应于模型的最优化准则而产生的收集数据的策略。而在计算机试验中,常用的是模型是所谓的全局均值模型(overall mean model)。

不失一般性,我们考虑试验区域是一个s维的单位立方$C^s=[0,1]^s$。当试验次数给定了,比如说$n$次,我们就需要考虑如何找到一个好的试验$D_n=\{x_1,\cdots,x_n\}$,使得$f(x)-g(x)$对于试验区域上的所有点,都尽可能的小。其中$f(x)$是真实的模型,而$g(x)$是拟模型。我们考虑到,对于所有的点,都要求上述差分达到最小是很困难的。因此,很多学者都将该问题进行了简化,转而去寻找全局均值$E(y)=\int_{C^s}f(x)dx$的最佳的估计值。而通常,都用样本均值,也就是平均数$\bar{y}(D_n)=\frac{1}{n}\sum_{i=1}^nf(x_i)$来估计总体均值。因此,我们的问题也就转化为了如何找到一个试验,使得这个试验得到的数据做样本均值来估计总体均值是最好的。这也就是计算机试验设计的动因。

从统计学的角度来看,如果样本点$x_1,\cdots,x_n$是在$C^s$上均匀分布上独立抽取的,那么样本均值是无偏的,并且方差为$\frac{var(f(x))}{n}$。但是,通常来说,这个方差太大了。因此很多学者提出了不同的抽样方法来降低这个样本均值的方差。1979年,McKay,Beckman和Conover基于分层抽样提出了一种新的抽样方法,这种方法使得随机选择的样本点并不独立,并且边际分布相同,因此

$Var(\bar{y}(D_n))=\frac{1}{n}Var(f(x))+\frac{n-1}{n}Cov(f(x_1),f(x_2))$

当$f(x_1)$与$f(x_2)$负相关时,方差就减小了。这种方法被人不断的推广,创新。成为了现在计算机试验设计中一块非常重要的内容——拉丁超立方体设计(Latin-Hypercube design)。在后来的不断发展中,拉丁超立方和正交表相结合,产生了很多正交拉丁超立方设计。此外,当引入一些准则时,比如熵准则,最大最小距离准则等,也产生了对应该准则的最优的设计,包括最大最小拉丁超立方等。这些设计在计算机试验中应用非常广泛,最近也有人将这种设计用在变量选择的过程中,通过模拟,大大提高了变量选择的精确度。

与拉丁超立方设计相对应的另外一种设计,是由我国科学家方开泰,王元在上世纪八十年代提出的均匀设计。均匀设计这一想法的提出,起源于伪蒙特卡洛方法中的Koksma-Hlawaka不等式。$|E(y)-\bar{y}(D_n)|\leq V(f)D(D_n)$。其中$D(D_n)$是设计$D_n$的星偏差(star-discrepancy),而$V(f)$是方程$f$的总体变动情况。其中星偏差是一种均匀性的度量,当试验点在试验区域分布越均匀时,星偏差的值就越小,因此,样本均值与总体均值之差的绝对值的上界也就越小,相当于提高了估计的精度。一个试验区域上具有最小星偏差的设计,就是所谓的均匀设计。均匀设计由我国科学家自主提出,并且在国际上得到了非常好的反响以及应用。之后,有很多学者,对于均匀设计做出了改进,使得均匀设计也不断地发展壮大。

下面简单介绍一下对于计算机试验得到的数据建模的常用方法。事实上,统计学习中的常用的建模方法都可以用来对计算机试验数据进行建模。包括样条回归,局部回归,神经网络等,都可以对数据进行建模。这里要要重点介绍的是一种非常常用的模型,高斯-克里金模型(Gaussian-Kriging models)。克里金是南非地质学家,他在其硕士论文中分析矿产数据的时候,提出了克里金模型,后来由几位统计学家发展了他的模型,得到了目前在计算机试验中非常常用的高斯-克里金模型。

$y(x)=\sum_{j=0}^{L}\beta_jB_j(x)+z(x)$

其中$B_j(x)$是选定的基函数,$z(x)$是随机误差,来自于高斯过程。该高斯过程零均值,方差为$\sigma^2$,协方差函数为$r(\theta,s,t)=corr(z(s),z(t))$。通常情况下$r$是预先选定的。可以证明,高斯克里金模型的预测值是BLUP。

关于计算机试验数据的建模,方法很多,但是建模方法仅仅是建模方法,无论是计算机试验还是实体试验,建模方法往往通用,因此,这里不做展开论述了。

下面简单介绍一下R语言中,做计算机试验的一些包。

lhs包,主要用来生成拉丁超立方体设计。DiceDesign包可以生成更多的一些空间填充设计。DiceKriging提供了对计算机试验数据构建高斯-克里金模型的功能,DiceView则提供了多维模型可视化的手段。以上的包在task view中都有所介绍。此外,值得一提的是VizCompX包,其对计算机试验的数据拟合高斯模型,并且提供可视化的手段。感兴趣的童鞋可以参看这几个包的帮助文档,帮助文档都不长,容易上手。

最后,提一点我个人的小感想。我认为,计算机试验中,更应该引人注意的话题应该是试验的设计。一个好的设计,不光能够提高试验的精度,更能体现一种美感。生成一个好的设计,大致上有两种路可以走,一种是预先设定一个准则,然后利用最优化的算法,进行搜索。常用的算法包括一些全局的最优算法,比如门限接受算法,模拟退火算法等。另外一种方法,则是利用数学中其他学科,比如伽罗瓦理论,编码理论等,通过这些学科的理论特点,精巧地构造一个设计。这两种构造设计的方法相互补充,相辅相成,提供了非常广大的研究空间。另外,这些为计算机试验而提出的设计,也可以用在很多其他的统计学的课题中,比如之前已经提到过的变量选择方法精确度的提升方面。总之,试验设计是研究如何有效收集数据的,无论数据是来自于实体试验,还是计算机试验,一个设计了的试验,往往都可以提高效率,提高精度。这也是试验设计这门课程的意义所在。越南的Nyuan开发了一款试验设计的软件Gendex,通过输入试验的行数,列数,选择你所需要的设计种类,便可以生成多种不同的设计阵。这款软件,是目前可以生成设计阵种类最多的,感兴趣的童鞋,不妨搜来玩一玩。

真理在缩水,还是上帝在掷骰子?

最近在Google Reader中看见科学松鼠会有两篇文章被频繁分享,名为《真理在缩水——现代科学研究方法并不尽善尽美?》()与(),下文简称《缩水》。文章很有意思,而实际上说的是我们的老本行——统计学,因此我在这里也发表一些我的想法和理解,包括这两年我在美帝学习的一些思考,部分内容受益于两位老师Kaiser和Nettleton教授,先向他们致谢(尽管他们永远都不会看到这篇文章)。同时我也要先说明一下,读这篇文章可能会很花时间(至少我花了大约二十小时写这篇文章),即使我的观点没有价值,我相信里面的引用文献是有价值的。

初读文章,我脑子里冒出的一句话是“上帝在跟我们掷骰子”,文中给出了大量的不可重复的试验,仿佛就像那些号称“具有统计学意义”(下文我再说这个所谓的“意义”)的试验结果只是若干次骰子中的一次运气好的结果而已。读完文章,我们可能不禁要问,到底是真理在缩水,还是它根本就不曾存在?下面我从四个方面来展开,分别说明人对随机性的认识、统计推断的基石、让无数英雄折腰的P值、以及可重复的统计研究。

一、感知随机

随机变量在统计分析中占据中心地位,数学上关于随机变量的定义只是一个“干巴巴的函数”,从样本空间映射到实数集,保证从实数集上的Borel域逆回去的集合仍然在原来的sigma域中即可。随机变量的性质由其分布函数刻画。写这段话的目的不是为了吓唬你,也不是为了作八股文,而是来说明我为什么不喜欢数学的理由,对我而言,我觉得有些数学工具只是为了让自己不要太心虚,相信某时某刻某个角落有个理论在支撑你,但后果是弱化了人的感知,当然,也有很多数学工具有很强的直觉性(如果可能,我想在未来下一篇文章里面总结这些问题)。我一直认为很多人对随机性的感知是有偏差的,对概率的解释也容易掉进陷阱(参见Casella & Berger的Statistical Inference第一章,例如条件概率的三囚徒问题)。

《缩水》一文发表了很多不可重复的试验案例,我们应该吃惊吗?我的回答是,未必。举两个简单的例子:

第一个例子:很多数据分析人员都很在意所谓的“离群点”,论坛上也隔三差五有人问到这样的问题(如何判断和处理离群点),而且也有很多人的做法就是粗暴地删掉,我从来都反对这种做法。除了基于“数据是宝贵的”这样简单的想法之外,另一点原因是,离群点也许并非“异类”。离群点是否真的不容易出现?请打开R或其它统计软件,生成30个标准正态分布N(0, 1)随机数看看结果,比如R中输入rnorm(30),这是我运行一次的结果:

> rnorm(30)
 [1]  1.19062761 -0.85917341  2.90110515  0.59532402 -0.05081508 -0.06814796
 [7]  2.08899701  0.76423007  0.92587075 -1.16232929 -0.68074378 -1.40437532
[13] -0.17932604 -0.72980545 -0.53850923  0.21685537 -0.35650714 -1.32591808
[19] -0.88071526 -1.25832441  0.24001498 -0.41682799 -0.09576492 -0.17059052
[25] -0.99947485  0.25108253 -0.47566842 -0.28028786  0.79856649 -0.13250974

30在现实中是一个比较小的样本量,你看到了什么?2.901?它接近3倍标准差的位置了。还有2.089?……如果你不知道这批数据真的是从标准正态分布中生成出来的,现在你会有什么反应?把2.9删掉?标准正态分布是一个在我们眼中很“正常”的分布,而一个不太大的样本量一次试验足以生成几个“离群点”,那么要是成千上万的试验中没能产生几项震惊世界的结果,你会怎样想?(上帝的骰子坏掉了)

另一个例子和统计学结合紧密一点,我们谈谈残差的QQ图。QQ图是用来检查数据正态性的一种统计图形,与腾讯无关,细节此处略去,大意是图中的点若呈直线状(大致分布在对角线上),那么可以说明数据的正态性比较好,因此QQ图经常被用在对回归模型残差的正态性诊断上。我的问题是,即使数据真的是正态分布,你是否真的会看见一些分布在直线上的点?若答案是否定的,那么我们就得重新审视我们对分布和随机的认识了。下图是一幅教科书式的QQ图(仍然基于30个正态分布随机数):

“正常的”QQ图
“正常的”QQ图(来自R语言qqnorm(rnorm(30)))

随机性并没有这么美好,即使数据真的来自正态分布,你也有可能很容易观察到歪歪扭扭的QQ图,尤其是小样本的情况下。比如下图是50次重复抽样的正态数据QQ图,它和你想象的QQ图本来的样子差多远?

library(animation)
set.seed(710)
ani.options(interval = 0.1, nmax = 50)
par(mar = c(3, 3, 2, 0.5), mgp = c(1.5, 0.5, 0), tcl = -0.3)
sim.qqnorm(n = 30, pch = 19, col = "red", last.plot = expression(abline(0, 1)))
真实的正态分布QQ图
真实的正态分布QQ图(图中直线为y = x)

正态分布是统计学中比较“正常”的一类分布(台湾学者甚至译为“常态分布”),我们尚不能很好感知它的随机性,就不必说其它“怪异”的分布了。

这是我想说的第一点,作为人类,我们对上帝的骰子至少在感知上就可能有问题(别误会,我不信教),接下来从理性角度分析一下。

二、统计推断

《缩水》一文中提到的基本上都是统计推断方法带来的结果,为了理解这些结果,我们必须三思统计推断本身的过程。一般说来,统计推断有两种途径:随机试验和(概率)统计模型,或者说基于试验的推断和基于模型的推断。前者的代表性方法为置换检验(Permutation test),不过它似乎被大多数人遗忘了,更多的人拿到数据首先想的就是用哪个统计模型和分布;实际上,置换检验是一种极具代表性的统计推理方法,可以用典型的“三段论”来说明它(参见去年江堂的文章):

  1. 要么A,要么B
  2. 若有A,则有C
  3. 若非C,则非A,于是B

置换检验的场景是,一次试验中,我们为试验单元随机分配不同的处理(treatment),为了简单起见,假设这里只有两种处理水平A和B,我们想知道两种处理在试验单元的某项指标上是否有显著差异。逻辑是这样:假设处理毫无效果,那么某一个试验对象的指标将不受处理影响,不管我们给老鼠嗑的是A药还是B药,结果都一样,那么我们可以把处理的标签随机打乱(某些A、B随机互换),打乱后A组和B组的差异不应该会和原来的差异很不一样(因为药不管用嘛),否则,我们恐怕得说,药还是管用的。就这样,我们随机打乱标签很多次,形成一个“人工生成”的AB差异分布(因为我们生成了很多个差异值),看原来的差异在这个分布的什么位置上,如果在很靠近尾巴的位置上,那么就认为P值很小。当了个当,当了个当,P值出场了。对置换检验熟悉的人是否有想过,好像我们一直没谈到什么分布的假设,那这个概率值(P值)是从哪里生出来的?答案是最初的“随机分配处理到试验单元上”。这就涉及到试验设计的一大原则:随机化。为什么要随机化?因为试验单元之间可能本来就有差异,换句话说,如果你不随机化,那么你观察到的差异有可能来自试验单元本身。比如,你从笼子里抓前10只老鼠给嗑A药,后10只老鼠给B药,这就没有随机化,前10只老鼠可能很笨或是老弱病残,容易被你抓住,而后10只老鼠跑得贼快。随机化将这些个体差异转变为了随机的误差,例如两只老鼠之间的确本身有差异,但我要是把它们随机分配给处理,那么这种个体差异就会随机进入处理组,保证统计推断有根基。如果这一点没有理解透彻,试验人员很容易在数据收集阶段就已经收集了错误的数据。《缩水》一文中的试验都是怎么做的,我没空去细究。

基于模型的推断的一大特征就是开始对随机变量做一些分布上的假设,例如两样本t检验,假设样本来自独立同方差的正态分布。仔细想想这里面的问题,对建模和理解模型结果有至关重要的作用。一个最直接的问题就是,假设条件是否可靠?George Box大人很久很久以前就说了一句被引用了无数遍的话:所有的模型都是错的,但有些是有用的。统计学方法很“滑”(用麦兜的话说),它的科学与艺术双重身份,总让人感觉拿捏不准。学数学的人可能觉得艺术太不靠谱,其它外行人士可能觉得科学太神秘。这个问题我不想作答,也无法作答,搁在一边,先说一些我曾经考虑过的问题,它们与《缩水》一文可能并没有直接联系,但应该能或多或少启发我们从源头考虑统计模型,直接上手统计模型的隐患就在于你认为一切都理所当然,随着时间推移,假设渐渐变成了“公理”和“常识”,我觉得这是很可怕的。

第一个问题是似然函数(likelihood function),它是频率学派的命脉,而我们大多数人仍然都是频率学派的“教徒”。对于离散变量来说,基于似然函数的方法如极大似然估计很容易理解:我们要找一个参数值,使得观察到的数据发生的概率最大。这里的“概率”二字应该被重重划上记号!接下来我要提一个让我曾经觉得后背发凉的问题:

为什么对连续变量来说,似然函数是密度函数的乘积?

你是否想过这个问题?我们知道连续变量取任何一个值的概率都是0,也就是说,如果按照概率的方式解释似然函数,那么连续变量的似然函数应该是0才对,换句话说,你观察到的数据发生的概率是0。现在你觉得似然函数还是一个理所当然的统计工具吗?

有一位统计学家叫J. K. Lindsey,1998年在(英国)皇家统计学会宣读了一篇论文,叫Some statistical heresies(一些统计异端邪说),如果你没见过统计学家打仗,那么这篇论文将会让你看到一场超大规模的战争,后面的讨论者中包括Murray Aitkin、D. R. Cox和J. A. Nelder等老江湖。Lindsey的文章几乎是被大家围攻了(期待我这篇文章也能被围攻),不过他对于似然函数的解释倒是让我有点茅塞顿开。细节我不展开,大意是,似然函数也是一种近似(用积分中值定理去想)。

第二个问题是渐近统计(asymptotic statistics),同样,这也是统计学家的日常工具之一,因为太常见,所以也有一种理所当然的味道。比如我们看到列联表就想到卡方检验(检验行列变量的独立性),殊不知卡方检验只是一种大样本下的近似方法。渐近统计的基石是什么?如果你要挖,我想挖到头你一定会挖到泰勒展开。至少目前我认为渐近统计“基本上就是泰勒展开的第二项(或少数情况下第三项)”。理论上泰勒展开有无穷多项,我们往往根据一些假设条件,把后面的高阶项都消灭掉,剩下一次项或二次项。比如你展开似然函数,就得到了似然比检验的卡方分布;你展开极大似然估计的一个连续函数,你就有了Delta方法(当然,需要依分布收敛的前提);就这样左展右展,展出了中心极限定理(对特征函数或母函数展开),展出了拉普拉斯近似(对对数密度函数展开)。如果你能看到这一点,就不会奇怪为什么正态分布在统计推断中有如此中心地位(谁叫正态分布的对数密度函数是个二次函数呢)。

第三个问题是,贝叶斯方法又如何?既然频率学派中几乎处处是近似,贝叶斯学派是否会好一些?我的回答是好不到哪儿去。贝叶斯的逻辑很简单,但由于灵活性太强,应用时非常摧残人的脑力,导致争议不断(先验分布怎么取、MCMC是否收敛等)。在《缩水》一文中,恐怕是没有基于贝叶斯方法的试验,因为在所谓的科学试验中,人们往往排斥“先验”这种想法,就好像先验一定代表主观、而客观一定正确一样。逻辑上,这是荒谬的。关于这些问题的重磅讨论,可参考Efron去年发表的The Future of Indirect Evidence以及文章后面Gelman他们三个人的讨论。我总感觉这不是我这个年龄应该看的东西,太哲学了。

我提到这些问题,本意是给统计学家看的,如果你是一个合格的统计学家,你自己首先应该意识到统计学的局限性,而不是拿到数据就分析。

三、万能的P值?

早些年当我还是个无知轻狂小子的时候,我曾戏称“统计软件就是为了放个P”,这里的P指的是P值,不是粗话。这话好像也不全然轻狂无知。使用统计方法的人,难道不是在追逐一个小于0.05的P值吗?如果你的结果不显著,那么肯定发表不了。换句话说,发表的结果很有可能是我们在自欺欺人。下面的漫画生动刻画了人们寻找P值的过程(来自xkcd):

Significant
Significant

重大科学发现!吃绿色的软糖会让你长痘痘!95%置信度!

当你看到95%的时候,你看不到红色的、灰色的、褐色的、橙色的、黄色的软糖……这便是《缩水》一文中说的“发表偏见”(publication bias,“偏见”翻译似乎不妥),即发表的结果是经过人工选择的,你已经不能用正常的概率意义去解读它,或者说,概率已经变了样。

插一句“统计学意义”:这个概念本来的英文是statistical significance,但是被很多专业的人翻译为“统计学意义”,我一直认为这很不妥,给人一种错觉,仿佛统计学保证了什么东西有意义一样,我提倡的译法是“统计显著性”。尤其是“由于P值小于0.05,所以具有统计学意义”这种话,我觉得应该见一句删一句。

上面的软糖问题涉及到传统的多重比较(multiple comparison)与P值调整,这里“传统”指的是要控制族错误率(Familywise Error Rate,下文简称FWER)。所谓控制FWER,也就是要使得一族(多个)统计检验中,一个第一类错误都不犯的概率控制在一定水平之下,比如0.05。让多个检验全都不犯错和单个检验不犯错(指第一类错误)显然是有区别的,比如假设所有的检验都是独立的,一个检验不犯错的概率是95%,两个都不犯错的概率就变成了95% * 95% = 90.25%,检验越多,不犯错的概率就越小。把整体的第一类错误率控制在某个alpha值之下,就意味着单个检验必须更“严格”,因此我们不能再以0.05去衡量每个检验是否显著,而要以更小的值去衡量,这就是P值的调整,老办法有Bonferroni等方法。

控制FWER显得有些苛刻,比如有10000个基因都需要检验在不同处理下的表达差异,那么要是按照传统的P值调整方法,恐怕是很难得出某个基因显著的结论(因为alpha值会被调得极其小)。FWER的目标是一个错误都不能犯,但实际上我们也许可以容忍在那些我们宣称显著的结果中,有少数其实是犯错的,就看你是不是“宁愿错杀三千,也不放过一个”了。

Efron在前面我提到的文章中把Benjamini和Hochberg在1995年的论文称为“二战以来统计界第二伟大的成果”(他把第一名给了James & Stein的有偏估计),那么B&H做了什么?答案就是虚假发现率(False Discovery Rate,下文简称FDR)。FDR要控制的是在宣称显著的结论中错误的结论的比例,比如10000个基因中有100个基因显著,但实际上有5个是虚假的发现(即本来这5个基因分别在两种处理下的表达并没有差异)。尽管有错误存在,但我们认为可以承受。

初学者到这里应该可以意识到了,通过FDR选出来的结果在理论上就已经存在错误了,当然这只是小问题,更大的问题在于,FDR的定义实际上是一个期望的形式:真实的零假设个数除以被拒绝的零假设个数的期望(零假设是没有差异)。凡是涉及到期望的东西,我们都应该冷静三秒想一下,期望意味着什么?

假设有一个游戏,你获胜的概率是70%,要是赢了,你得到一百万,要是输了,你付出一百万;获利的期望是40万。现在我请你去玩,一把定输赢,你玩不玩?我相信大多数人不会玩(除非你实在太有钱了),为什么期望是赚40万你也不玩?因为期望往往是“样本量无穷大”你才能隐约看到的东西,玩一次游戏,输掉一百万的概率是30%,恐怕你不敢。

FDR是个期望,也就是你做很多次试验,平均来看,FDR在某个数值附近。一次试验中它究竟在哪儿,谁都不知道。就像(频率学派的)置信区间一样,我给你一个区间,其实你并不知道参数在不在区间里,你也无法用概率的方式去描述单个区间,比如你不能说“参数落在这个区间内的概率是95%”(只有无数次抽样重新计算区间,这无数个区间覆盖真实参数的概率才是95%)。

所以,某种意义上,概率论源于赌博,而统计学在骨子里一直都是赌博。旁观者看赌徒,总觉得他在赚钱。当然,统计学家是“高级赌徒”,他们不是随机乱赌。

四、可重复的统计研究

看到这里,你大概也脑子有点抽筋了(如果你把我提到的Lindsey和Efron的文章都看过了的话),我们换个轻松点的话题:可重复的统计研究。这不是我第一次提它,我们一直都在号召可重复的统计研究(如《Sweave:打造一个可重复的统计研究流程》)。还是老话一句,不谈道德问题,因为这是不可控的因素,我们可控的只有制度和工具。源代码不会撒谎。

我们期待学术研究过程的透明化,至少统计之都在努力。

正交试验和多因素方差分析

英国学者R. A. Fisher等在二十世纪前期开创了近代数理统计这门大学科,开始的标志是学生氏t分布的引入。在统计的发展过程中,Fisher又提出:“在进行一批试验之前,考虑到在取得这批试验的结果后,将要进行统计分析,因此,在试验前怎样合理地安排这批试验使得试验后的结果和统计分析取得更好的效果,是值得思考的。”在这种提法的推动下,在数理统计中形成了一种一分为二和合二而一的试验设计与方差分析这两个庞大的子学科。

方差分析主要是为检验因子在试验中作用的显著性而引进的一种方法,最早是由R. A. Fisher于1920年前后对农业试验作统计分析时引进。如果能对观察值的方差进行分解且分解出来的每一部分都可作出明确的统计解释,那么这个分解就是方差分析[1]。单因素方差分析在数学方法及其应用上基本没什么问题,所以这里主要讨论多因素方差分析的一些问题。

方差分析的一个重要假定是各个试验点同方差。这个假定过于强硬,也未必符合实际。例如在农业试验中,高产田产量的方差往往较低产田产量的方差大。当然,在某些条件下可以近似地认为各试验点的方差相等。

多因素方差分析的一个重要问题是在对因素间交互作用的处理上。可以应用多元方差分析的试验数据要符合严格的要求,它们一般来源于两类试验:完全组合试验和正交试验(正交试验的两个重要特点是均衡分散和整齐可比)。

交互作用是完全组合意义上的一个概念[2]。做完全组合试验可以得到各因素间的交互作用,若全体交互作用为零则主效应完全可加。然而,按照普遍联系的法则:主效应之间通常不是完全可加的。完全组合试验时,即使验证出了交互作用为零也没有什么太大的实际意义,何况当试验点作些平移,交互作用便随着改变。也正是由于交互作用是完全组合意义上的一个概念,若在某些试验点上没有观测值,那么有些交互效应或主效应就计算不出来了。

完全搭配且每个搭配的重复次数相同的试验得到的数据的方差分析是一门数学,形式逻辑的推导正确,但这并不意味着是好的应用数学。好的应用数学就是要提高试验效益和效率,尽可能通过少数次试验找到结果好的因素及水平搭配。所以,这里谈多因素方差分析的问题是也主要是从应用的角度。

当试验涉及的因素较多时,完全组合试验代价太大,试验效率很低。这时就要求做部分实施,即选取因素水平的一些组合(完全组合的一部分)来做正交试验。应用多因素方差分析来处理正交试验的数据时,对因素间交互作用的处理比较含糊:1)有时根据经验强行假定因素间不存在交互作用,这时在理论上就直接认定认为主效应完全可加;2)有时把认为可能存在的交互作用安排进正交表;3)另外还有“三阶或三阶以上因素间交互作用可忽略不计”等假定,等等。这些对待交互作用的态度有些让人摸不着头脑,因此在应用上也就有很大的缺陷。

可能也正是由于这些不足,欧美那些偏爱多因素方差分析的学者甚至认为不应该采用部分实施,比如“正交拉丁方限于应用在交互作用可以忽略不计的试验情况”,“当缺乏关于交互作用的信息或者当交互作用为零的假定是否成立还可疑时,应该安排完全搭配”之类,这从根本上剥夺了部分实施的巨大作用,实为一种偏执于方法而忽略实际应用的倒退。

科学试验探索未知,多因素试验的变化范围广,开始时把因素的水平范围选偏在所难免,即使有多年的经验在里面也可能有因素水平选偏的情况。

举一个例子:试验中有4个因素,假定均为三水平。分别用L9(34)和K(81)代表正交部分实施和完全搭配。完全搭配试验时,不用方向,埋头拉车,这时能够找到这81次完全搭配中的第一名。使用正交法:第一阶段,按L9(34)做9次试验,找到直接看的好搭配。第二阶段,根据这9次试验结果提供的线索,可以为好搭配的进一步搜寻提供帮助,比如,根据趋势图判断因素各水平有没有选偏,如果选偏了可以在下一批的试验中调整因素的水平。这样就可能跳出原来的因素水平范围,得到的好搭配甚至超过完全搭配时的第一名。根据实践经验,这样的分批试验往往至多做三批就可以找到非常好的结果了。

当试验因素比较多时,比如13个因素,也假定均为三水平,这时选用L27(313)和K(313=1594323)作为部分实施和完全搭配这两种方案代表。如果做完全组合试验,除了试验次数大大增加,而且因素水平的范围更易选偏。通过分批的部分实施则可以大大提高试验效率。当试验因素越多,两种方案之间的差距越大。部分实施的巨大作用显而易见。

对于正交试验,除了在处理因素间交互作用上有缺陷,应用多因素方差分析找到好的结果往往至多是局部最优。它分析的仅仅是某一批试验的数据,通过对因素效应的分解以期找到一组好的因素水平搭配。虽然有时可能会发现得到的这组因素水平搭配已超出已经做过试验的各因素水平搭配中,但也仅止于此,然后就匆匆下结论。不仅没有继续试验以检查该水平组合是否真正是好的,而且多因素方差分析对于一开始因素水平范围是否选偏并没有考虑。试验是一项不断探索的过程,而往往不是某一批次的试验就能解决问题的。分批做部分实施是有计划地进行,每一批试验为下一批的试验的布点服务,然后不断调整因素水平的范围,以尽可能接近全局最优的因素水平组合。

其实,正交试验也好,多因素方差分析也好,最终目的还是要找到好的试验因素水平组合。那么又何必固执于求出交互作用,固执于使用多因素方差分析的方法,倒不如跳出“交互作用”的圈子,并尝试从试验全局来考虑如何找到好的因素水平组合。

张里千先生舍弃了田口式的表头设计和方差分析的方法。经过不断研究,并通过大量的深入实践和总结,去伪存真,删繁就简,逐步地提炼出一套实现最优化的正交设计的系统理论和方法,并提出了一般性指导原则和策略,即“由稀到密,分批走着瞧,有苗头处着重加密,过稀处适当加密”。在满足这个指导原则和策略下,各批试验点能充分发挥效率;在限定的试验次数内尽可能地接近全局最优解;如果试验次数可以无限,则以尽快速度可靠地收敛到全局最优解。该方法的另一大优点是简单易学、灵活方便,普通技术人员都可以学会并能在各自岗位上发挥很大作用,拥有巨大的社会潜力。[3]

如果有朋友对张里千先生的这套最优化方法感兴趣,我将在下一期的文章详细介绍该方法。另外,介绍这套实用方法的《实用选优法》一书(由张里千先生编著的最新版本)也即将由科学出版社出版,敬请关注,哈哈!

注:1. 本文主要是基于张里千先生对多因素方差分析的一些看法。

2. 张里千,数学家和应用统计学家,中国现场统计研究会的主要创始人,早年毕业于北京大学数学系,后来任中科院系统科学研究所研究员。上世纪五、六十年代在非参数统计和试验设计等若干研究领域做出了不少深刻和杰出工作,七十年代以来主要从事正交试验设计与最优化的理论方法研究、应用和推广工作。以上两项主要工作均获得了1978年的全国科学大会奖。

 

参考文献:

[1] 陈希孺. 数理统计学教程[M]. 北京:中国科学技术出版社. 2009.

[2] 张里千. 交互作用和多因素最优化[J]. 数理统计与管理, 1991(03): 28-35.

[3] 张建方. 张里千传记 from 正交法和应用数学[M]. 北京:科学出版社. 2009.

如何设计一个试验

R·A·费歇尔爵士说在试验设计中经历的不是一个试验而是一种经验。

在静静地看了几遍David Freedman等著的《统计学》中关于试验设计的部分后,总觉得应该写点东西发泄一下。该书自从买来就一直放在书架很久没动,也懒得动,因为翻翻前面觉得太简单。最近心情比较平静,翻了翻试验设计部分,同时思考现实中的类似例子,觉得挺有味道的。

试验设计包括很多内容,比如大家可能都熟知的正交表构造、区组设计、拉丁方设计、饱和设计等,而书在这部分所说的试验设计主要讲在实际中如何设计一个试验,尤其是只考虑单因素的试验设计,即如何设计一个试验或通过观察研究来辨别一个因子(定性或定量)是否会带来某种特定结果,比如吸烟是否会导致肺癌。我们都知道,一个因子的效应是否显著,最常用的办法就是对照比较了。但是如何对照比较?在现实中很多人都会犯错,因为大家都往往会忽视比较的前提或基础,夸张一点说就像一个大人和一个小孩进行100米赛跑,他们的最终成绩是没有比较的意义的。

比较好的一个方法就是随机对照双盲试验:比较对照的基础是要在分组之前保证试验对象除了待研究的因子之外其他条件尽可能相似,或者说来自于同一母体;然后随机分组,比如用抛硬币决定分组等;”双盲”即试验对象和评估反应的人员对于分组一无所知,只有试验研究人员知道所有的分组。理论能给予也许就是以上一些文字,而在实际中具体设计这样一个试验时发现很多问题迎面而来。有时真的不得不感叹”实践处处皆智慧”,难怪说试验设计不仅是一门科学还是一门艺术呢!

举个例子说明随机对照双盲试验(我也是借花献佛,引用书中的例子,主要还是实践经验的匮乏啊!)美国在1916年遭受了脊髓灰质炎的袭击,受袭击的主要对象是1、2、3年级年龄段的学生,后来开发出了一种疫苗,然而该疫苗对于防止脊髓灰质炎是否有效呢?具体做试验时如何选择试验对象,可以随便选一个学区吗?这种疫苗会不会带来更大范围的脊髓灰质炎儿童呢?(人毕竟不是小白鼠啊!尤其是药物试验便会涉及到这样的道德问题。)最后美国卫生总署选定的学区是据信脊髓灰质炎最严重的一个学区。确定了这个学区后,就要来选择具体的试验对象,选哪个年级呢?具体又选哪些儿童呢?在试验过程中有相当部分孩子的父母因为各种原因拒绝参加这样一个试验。另外,在试验过程中还发现生活在卫生条件较差家庭的儿童由于来自母亲的抗体而能经受更厉害的传染,而生活在卫生条件好家庭的儿童往往更容易感染脊髓灰质炎。最后找到这样一个母体:试验对象的父母均同意注射疫苗,家庭背景等方面相似,那些看来会明显影响处理因子的混杂因素都尽可能相似了。在确定了这样一个母体以后再分组,负责评估反应的医生是不能参与分组的,主要是为了减少医生的主观偏性。一个不错的方法就是抛硬币,正面的一组,反面的一组,试验的儿童虽然可能知道他抛出的正面还是反面,但却不知道自己到底是处理组还是对照组。接下来试验就可以正式开始了。

其实随机对照试验主要还是要避免来自各方面的偏性,从而保证研究结果的准确性。而偏性主要来源于其他因子效应的混淆。

随机对照试验看来是非常不错的测定某一因子的效应是否显著的方法,然而在实际中却很少有这样的施展机会,比如研究吸烟是否会导致肺癌,吸烟者哪有时间陪你做一个为期十年的试验,这时就需要从观察中分析研究。在观察研究中依然要运用随机对照的思想,比如我们研究吸烟与心脏病的关系,那么吸烟以外的一系列因素就要控制好,比如限定是男性吸烟者,处于某个年龄段的吸烟者(作为处理组),另外该年龄段的男性未吸烟者作为对照组(其中可能还有其他的一些因素需要控制,不一一列举),然后跟踪记录。相关联并不等于因果。一般人的认识似乎是经常吸烟的人得肺病、心脏病的较多,但是不要忘记表面的现象可能是由很多因素混杂在一起而导致的,因此不能轻易判断两者之间存在因果关系。统计学教育我们,凡事不能从表面判断,原因是复杂的,我们要做的就是要找出真正的原因(就像电视剧《少年包青天》中的那句经典台词”真相只有一个”,呵呵),这也是统计学带给我乐趣的一个重要原因。

观察研究中还有这样一种情况:以某种检查和乳腺癌的关系为例,为了研究该种检查是否可以降低乳腺癌带来的死亡率,有62000名40至64岁的妇女被选作试验对象,她们被随机分到两个组,处理组中妇女接受年度的该种检查,而对照组则是做一般的常规性检查。但是跟踪发现处理组只有10800名妇女接受年度检查,有些拒绝检查(主要原因可能还是家庭经济状况)。另外对照组也并不会因为是对照组而不去检查,对照组中也会有一小部分人”偷偷”去接受检查。这样的情况又如何比较,如何得出研究结论呢?

说试验设计是一项艺术,是因为其中有很多经验或技巧的东西在里面吧,通过这些经验或技巧可以更好地对处理因子以外的混杂因素有一个较好的控制。因此,在具体做试验设计的时候更需要从实际出发,融入实际,发掘出真正的原因。