一团糟的数据做方差分析,幸好还有Wilcox的robustANOVA(R统计专用)

伍教练在伦敦大学学院完成的硕士课题是Bilingual Advantage In Visual Selective Attention Task Under Various Perceptual Loads with European and Chinese samples,主要用到混合设计方差分析(mixed ANOVA),对比双语人士和单语人士在4种不同知觉负荷下的答题表现,探测双语认知优势。
在北大的时候我学过至少4次统计学,每次都是似懂非懂,糊里糊涂通过考试之后就忘光了。在UCL攻读语言发育方向,统计学的要求比较高,足足上了两个学期,要上机考试还要写2800字的案例分析论文。最近跟语言学另一个方向的同学沟通,才知道他们压根没这门头痛的课!不过这次(希望是最后一次)学统计的经历是最深刻也最特别的,不光是用英语学习,而且还觉得很有用。写统计课论文是对已在学术期刊上公开发表的论文进行挑刺,为此我翻遍了英国统计大神Andy Field的Discovering Statistics Using IBM SPSS,还找了很多文献研读,钻牛角尖的过程居然第二次发现统计学很好玩(第一次是在高中的时候用Pascal语言编了个简陋的统计程序)。

在分析自己课题的数据时,更是要吃透统计学了。即使是已发表的研究,有相当比例的统计分析是有漏洞的,这也是统计老师让我们挑刺的原因。但是,刚学完一些统计基础的研究生,水平不会高过那些发论文的博士、教授,难道他们不知道自己的统计方法有问题吗?现在我明白了,他们是“臣妾做不到”,因为实际收集到的数据往往是一团糟的,做同样的测试有人认真做有人瞎做,有天才也有低能儿,最后你发现数据有缺失的,有高或低得离谱的,更麻烦的是在不大的样本里,有些数据就是不符合正态分布,或者缺乏方差齐性、圆性等,导致经典的统计方法如ANOVA无法使用。其中最麻烦的是正态分布,数据不符合就是不能做常规的ANOVA,连做Greenhouse-Geisser修正的机会都没有,而混合设计方差分析你还无法转做非参数检验。
我在之前研究相同问题的研究生论文(Lukic, 2017)
里见到作者“霸王硬上弓”,不知道从哪儿引用了一篇论文说“个别次数的数据不符合正态分布也可以做ANOVA,因为ANOVA本身很强大”
其实这个问题很经典,Andy Field在他的教材里头就多次写道,如果每次他回答非正态分布数据做混合设计方差分析的问题假如收取1英镑,那么他就有钱买一套新的架子鼓了(Field, 2013)。他的回答是:
There are robust methods that can be used based on bootstrapping (Wilcox, 2012). They can’t be done directly in SPSS but they can be implemented in R, and are explained in the sister textbook for that package.

美国统计大神Rand Wilcox有一套基于自展法的强力的办法做ANOVA,但是要用到R语言,一种学习曲线很陡峭的方法,而我学了这么多年统计学都是用SPSS。没办法,只好根据Andy Field在Discovering statistics Using R这本书中的建议下载安装R,后来自学了YouTube上一套教程又改用更方便的R Studio,都是开源免费的,后者在用之前还得先安装好R。

R是执行命令行的,没有SPSS那么傻瓜,开始用起来需要适应。而且要用R做某方面的统计,还得额外下载专门的扩展功能包,还得每次都重新调用。按照书上一步步操作就好,但跟无数电脑软件问题一样,到了实际操作的时候就会出现各种意外,出错导致执行不下去。Wilcox的统计大法要安装WRS这个包,但老是安装失败,原来2018年6月改包已经升级到WRS2,连统计函数的自变量格式也发生了重大变化。最关键的是WRS要求分析的数据不能是long结构,而要改成wide结构,而WRS2又要求数据回到long结构。Andy Field的Discovering statistics Using R(2012版)和Rand Wilcox的Introduction to robust estimation and hypothesis testing(2012版)两本能下载到的书都是介绍WRS一代,能说清楚WRS2的Introduction to robust estimation and hypothesis testing(2017版)要买或者在UCL的教育学院图书馆借。

我本来打算去那个世界第一教育学院借书的,最后还是宅着解决了问题。原来,Wilcox一直在自己的主页更新他的大法:
https://dornsife.usc.edu/labs/rwilcox/software/
用R的常规package安装方法不成功(联想到WRS2的升级,我怀疑大神跟R社区的人闹翻了),我只能下载他的txt函数集,用source(file.choose())直接导入——这些括号误导我把文件名和地址填进去,折腾半天才知道不用填,直接ctrl+回车执行然后弹窗选文件。终于可以统计了,我用到的函数如下:
setwd("C:/R")
hw<-read.csv("hw.csv", header = TRUE)
english=bw2list(hw,4,c(14,17,20,23))
bwtrim(2,4,english)
$`Qa`
[1] 0.01028409
$Qa.p.value
[1,] 0.9202307
$Qb
[1] 32.37664
$Qb.p.value
[1,] 1.578525e-07
$Qab
[1] 0.6168458
$Qab.p.value
[1,] 0.6128597
WRS一代自由度欠奉。$`Qa`是组间因素主效应,$Qb是组内因素主效应,$Qab是互动效应。Andy Field书中的tsplit函数和bwtrim完全等价。如果是用WRS2,那么要写成bwtrim(error ~ speakerstatus*level, id = participantID, data = hw),不用定义数据矩阵了,直接用数据列计算,但数据要搞成long形式:error是要算的数据,speakerstatus、level是指定数据属于哪一组哪一层,对应唯一id,在Excel上乾坤大挪移一下就好。
speakerstatus
level
speakerstatus:level
这样的显示结果就比较清晰,比SPSS还清楚,还提供自由度。其他WRS2的函数用法就没有研究了,我懒得去借那本Introduction to robust estimation and hypothesis testing(2017版),你要搞的话可以等Library Genesis更新。WRS的一代二代计算结果应该是一样的,就是精确位数有点出入,我用两代方法计算过所有二维ANOVA,确保无误。以下还是介绍WRS一代。
ESmainMCP(2,4,english,tr=0.2,nboot=100,SEED=T)
$`Factor.A`
[1,]
$Factor.B
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
esImcp(2,4,english,tr=0.2,nboot=100,SEED=T)
mcp2atm(2,4,english,
tr=0.2,alpha=0.05,grp=NA,op=F)
$`Factor.A`$test
[1,]
$`Factor.A`$psihat
[1,]
$Factor.B
$Factor.B$`n`
[1] 21 21 21 21 21 21 21 21
$Factor.B$test
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
$Factor.B$psihat
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
$Factor.AB
$Factor.AB$`n`
[1] 21 21 21 21 21 21 21 21
$Factor.AB$test
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
$Factor.AB$psihat
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
$All.Tests
[1] NA
$conA
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
[7,]
[8,]
$conB
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
[7,]
[8,]
$conAB
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
[7,]
[8,]
z=bw2list(hw, 4, c(15,18,21,24,25,26,27,28))
bwwtrim(2,2,4,z)
$`Qa`
[1,] 5.011362
$Qa.p.value
[1,] 0.02540106
$Qb
[1,] 48.11958
$Qb.p.value
[1,] 7.196466e-12
$Qc
[1,] 0.8477969
$Qc.p.value
[1,] 0.4678504
$Qab
[1,] 0.09024845
$Qab.p.value
[1,] 0.763924
$Qac
[1,] 0.3643552
$Qac.p.value
[1,] 0.7787607
$Qbc
[1,] 2.869379
$Qbc.p.value
[1,] 0.03550038
$Qabc
[1,] 0.5556118
$Qabc.p.value
[1,] 0.6444565
看到了,这次abc三个因素两两互动、三个一起互动都算出来了。Post hoc和effect size就不知道怎么搞了,就是follow up其中的显著差别便可。
yuend(hw$PL1dD, hw$PL1dS, tr = .2, alpha =0.05)
yuenv2(hw$PL1dD, hw$PL1dS,tr=0.2,alpha=0.05)
不知道robust t-test和非参数检验Mann-Whitney谁更有power,反正我就全套用Wilcox的方法了。
估计不少读研的同学可能也会遇到类似的问题,我推荐英美两位统计大神近几年的新成果。可能统计高手在Matlab、SAS上面有更多的手段。伍教练并非统计高手,只是出于实际研究的需要自学了如何在R上实现Rand Wilcox的robust ANOVA,一个接一个解决技术问题,比较有快感(实际上走过的弯路比本文所述多了好几倍,就不赘述了)。其实这套方法的统计结果跟普通的ANOVA是差不多的,但胜在没有违规操作,写到论文中更理直气壮。
References
Field, A. (2013). Discovering statistics using IBM SPSS statistics. Sage.
Field, A., Miles, J., Field, Z. (2012). Discovering statistics Using R. Sage.
Lukic, S. (2017, unpublished MSc manuscript). Eyes full of language: examining perceptual capacity in bilingual speakers.
Schmider, E., Ziegler, M., Danay, E., Beyer, L., & Bühner, M. (2010). Is it really robust?. Methodology.
Wilcox, R. R. (2012). Introduction to robust estimation and hypothesis testing. Academic press.
文/伍君仪,透析英语使用法创始人、畅销书系列《把你的英语用起来!》《把你的词汇用起来!》作者、北京大学心理学硕士、伦敦大学学院语言科学(语言发育方向)研究生
读懂原著,听懂新闻,词汇量直奔10,000!“把你的英语用起来”VIP视频直播训练营每周开课,透析法创始人伍教练真人主讲
【课程价值】
只需1个月,就从“学英语”质变到“用英语”!通过手机平板实现全英化生活方式,让您读懂英文原著,词汇量稳步扩充到10000以上,英语考试一路通关。
【课程内容】课程有效期为1年,每周讲课2小时,“4+1”结构滚动开课,8小时听说读写必修课+每月更新的丰富选修课。QQ群内24/7教学答疑及操作示范,每日口语写作打卡实战,伍教练指导完成作业。
【报名方法】
登录http://dialysis.taobao.com进入“伍君仪透析英语”淘宝店拍下课程,或者添加伍教练微信号auguwu报名