Tag Archives: method

Reproducible Research第二周笔记

可再现研究》的第二课,主要是介绍在R中使用何种工具让我们的研究变得可再现,而这里重点介绍的,是R Mark down。

不过在讲R Mark down之前,先提了R代码起码的标准。
1 always use text file / text editor (这一点是为了保证你写的代码不依赖于特定的软件,适用范围大)
2 indent your code (有缩进,让你的代码看起来结构明晰,最少4个字符宽度,8个最好)
3 Limit the width of your code (80 columns,适应人眼以及人的适时记忆的特点,太长了不方便)
4 Limit the length of individual functions (同样是为了整体感强)

讲完R代码的基本标准之后,Roger D. Peng转向了Markdown. 这个语言是为了方便向HTML转换的一种语言特点是easy-to-read,easy-to-write。

举个栗子:如果要使用斜体,Markdown会这么写:

*This text will appear italicized!*

最后的输出是:
This text will appear italicized!

非常直白。后面老师还举了其他的栗子,包括粗体、标题等,总之就是非常直白。所以Markdown是非常友好的一个工具。

不过对于可再现研究来说,最重要的还是R Markdown,这个适合于数据分析语言。R Markdown是将R code与 Markdown结合起来,能够在文本中显示可以执行的R代码。在处理R Markdown文本的过程中,执行其中 的R代码,完成数据分析,而分析的结果又可以呈现的R Markdown的文本里。R Markdown是所谓的Literate statistical programming的核心工具。

R Markdown工作的流程是这样: R Markdown –> mardown –> HTML。这个过程在R Studio中非常容易实现。

话说回到Literate statistical programming,其实就是有一个文本的语言加上一个编码的语言。原先有Sweave的系统将LaTex 和R整合起来,不过由于LaTex用的人少,所以就没有多大的受众。knitr这个由谢益辉开发的工具包,整合了多种文本语言和R,因此流行起来。

Literate的优点是将文本与代码放在一个地方、数据和结果可以自动更新,而且代码是活的,可以直接执行。但是它的缺点是可能会让文本变得难以阅读,而且也可能减慢代码执行的速度。

接下来,老师开始介绍主要的工具:knitr。它支持RMarkdow, LaTeX, HTML,可以输出为PDF、HTML和Word,而且已经内嵌于RStudio了,非常方便。使用起来,其实只要下载最新版本的R和RStudio就可以,但关键是你会用它。

knitr即使能够这么灵活地整合代码与文本,它适用于哪些情境?
最适合的是写R工具包的手册或者教程,这里需要文本与代码的混合;短小的技术支持文档也可以适用 ,数据分析结果报告和预处理过程都适用。
但knitr也不适合一些情境,比如非常长的研究文章,非常复杂的计算或者文档有非常具体的格式要求的。

至于具体如何使用knitr,需要看视频一步一步的介绍,但是可以说一下它可以做如下几个事情:
1 在文本中输出计算的结果;
2 在文本中输出图形;
3 在文本中输出表格(目前是在HTML中输出的,在word中似乎还有点乱。)

在R Markdown中,R代码以“`{r}开头,以“`结尾。这一个代码的chunk可以有名字,但是一个R Markdown中的名字不能重名。后面视频中都是讲如何使用knitr的演示,需要看视频+使用RStudio进行操作。

顺便说一下第二课的作业,是一个小的数据分析的project。需要使用R Markdown完成一个简单的数据分析,然后上传到github上,由同伴进行评分。完成这个作业算是一个练习,对于不太熟悉R和github的人来说(比如我),还是需要花费一些时间的,但是也非常有收获。

一点感想是:R Markdown对于分析心理学实验的数据来说,虽然有点小提大作的感觉。但你一旦掌握了这个方法,能够用R Markdown完成一次数据分析,也不用担心后面再Check这个数据时的问题,只要代码和数据是原来的,结果就是一致的,直接输出结果部分,也省去了从SPSS输出中摘录结果的痛苦。要用要用要用!

Reproducible research 第一周笔记(2):数据分析的结构与数据组织

Reproducible research第一周的视频中,还简单地介绍了两个内容,数据分析的大致流程与数据组织的一些tips。

数据分析的流程在Data science这个specialization的其他课程中应该是重点,这里只是提了一下,也值得一说。

Image1
红色和灰色部分是分两次来讲解的,采用的例子是使用分类器来对邮件中的垃圾邮件进行分类。这里讲了许多如何去找好的数据来源,如何处理这些数据等问题,但与心理学研究的现实差别太大。

不过总体来讲,思路还是有一致之处的。从Define the question 到obtain the data,就大致对应从确定研究问题以及收集数据的过程。Define the ideal data set有点类似于我们决定使用什么研究手段来进行探索,问卷、访谈、行为实验、神经成像或者是分析历史数据。如何确定ideal的数据,需要有经验指导,也需要有现实的资源。Obtain data这一步基本上是体力活,要去做实验收数据。Clean the data在我们的研究中问题要看情况,一般通过实验或者问卷得来的数据是比较干净的,但是神经成像或者ERP的就不好说了,pre-process上花的时间惊人。

灰色部分步骤,在课程视频中主要是讲如何训练和测试分类器,与心理学中的统计分析也不太一致,不多说。值得注意的是,我们对数据的分析一般到interpret results为止,就开始write up results了;但这里多了一个challenge results,这一步挺有意思,也是在研究中需要注意,对于得到的结果需要多讨论。

当然,最后一步就是这个课程的核心,如何整理出可再现的代码来。可以说,目前在心理学的研究中,极少有人干这个,但实际上是很有必要的。今年psychological science的审稿规则变了,可能会有一些代码公开。

最后一个视频中,Roger Peng提到了数据分析的组织(organizing a data analysis),是非常好的经验分享,主要是下面这个图。

Image2

对于我而言,这个图确实很有提示作用,因为自己的数据其实是一片混乱(到目前为止仍然是)。除了raw data与processed data有区分之外,后面的基本上都是混杂的(其实后面的只在figures和少量的r code, spss code)。也就是说,做完一次分析以及对结果进行讨论之后,需要将final的东西与中途做过的许多东西区分开来,方便最后整理出来一个reproducible的数据和代码。

到这里,这个课程的引言部分就结束了,接下来的,是正文部分了:如何来进行reproducible的 research。慢慢来听课学习以及做笔记。

Reproducible research 第一周笔记(1):什么是reproducible research

Reproducible research 是John Hopkins在coursera上开设的一门课程,由Roger D. Peng, Jeff Leek, & Brian Caffo三人一起讲授。实际上这门课是John Hopkins在Coursera上“Data Science”这个specialization中的一部分,其证书需要花29美元才能得到。这个specialization还包括了”the data scientists’ toolbox”、”R programming”等课程,每门都需要29美元才能得到证书。不过不花钱也可以学习这门课以及完成作业,这是coursera最值得夸赞的优点。

第一周主要讲的问题,什么是reproducible research(可再现研究)? 我理解的可再现研究指的是,研究者A使用B软件对其数据结果X进行分析后,研究者A本人或者其他人再次使用B软件对X进行分析时,得到的结果与A报告的结果一致。这里其实涉及到一个非常重要而且许多研究者不愿意去做的问题:公开数据和分析代码。这个开放性的问题以后可以讨论。那么用这门课里的原话说,可再现研究是这样:
“ Reproducible Research: Make analytic data and code available so that others may reproduce findings ”

听起来很简单的事情,似乎没有必须去强调,但事实并非如此。

我们理想中的科学研究,是非常可靠能够经得起重复验证的。但现实中大部分的科学研究,却因为各种原因而从来没有被重复验证过。可再现研究就是想做一点点的工作,将目前我们完成无所作为到重复验证之间的空白填补起来,保证研究结果至少在数据分析上没有问题。这个工作也并不简单,因为随着数据量的增加,数据分析过程变得复杂而繁琐,非常容易出错。如果没有合适工具的辅助,我们就难以保证自己分析的结果确实是可再现的。

Image

可再现研究将大大提升读者对研究背后过程的了解程度,从而增加了读者对原研究进行判断的把握,减少重复验证难度。下图是课程中提到的一个图,非常好地展现了研究者与读者与数据进行互动的过程。从这个图中可以看到,如果没有公开原始数据和相应的分析过程代码,读者对最后展现出现的结果其实所知甚少。

Image2

我之所以要选择学习Reproducible Research这个课,是因为个人感觉在心理学研究实践,reproducible的问题也比较严重。一方面,最近心理学领域的可重复性(replicatibility)问题受到关注 ,另一方面,最近自己在实验结果的分析中,也发现了即使想reproduce自己先前的分析,也是颇费周折,因此想寻找合适的方法能够简易地重现结果,希望能够在这个课程中获得帮助。数据分析过程混乱的一个问题是:研究者可能会知道并且使用了正确的方法,但却因为各种原因导致他们的结果报告中在一些简单的复制粘贴过程中犯错。这一点上,最近的一个研究可以为我作证,Nuijten等(2015)发现
“half of all published psychology papers that use NHST contained at least one p-value that was inconsistent with its test statistic and degrees of freedom.”
由此可见问题的严重性。

在这一周的课程中,还提到了最近几年来可再现研究的发展状况,其实主要就是开设这门课程的几位老师在呼吁这个问题。当然,这个努力是非常有价值的,而且他们的呼吁出现在了science上:

Image3

最后,课程还提到了一些进行reproducible的工具,包括sweave这些工具。主要提到的是knitr,这个由谢益辉开发的R工具包,目前已经非常流行了。

第一周课程里,除了简介可再现性的概念之外,还介绍了数据分析的结构和数据组织的tips,明天写。

参考文献:
Nuijten, M., Hartgerink, C. J., van Assen, M. L. M., Epskamp, S., & Wicherts, J. (2015). The prevalence of statistical reporting errors in psychology (1985–2013). Behavior Research Methods, 1-22. doi: 10.3758/s13428-015-0664-2

 

 

 

 

当谈大脑时我们在谈些什么——聊聊脑成像中“大脑图谱”

注:本文以”科学家谈大脑时,大多在谈“柯林”的大脑?“为题在百度知道日报首发(http://zhidao.baidu.com/daily/view?id=4206)。原文根据知道日报的要求将人名均翻译成为中文,同时删除了参考文献。这里为未翻译版本,增加了参考文献。

随着脑成像(或者神经成像,本文中两个均指脑成像)的普及,大脑成为了科普中的一个流行词,脑成像的大脑图也成为了科普文化的一部分。与神经科学流行相伴,一些大脑结构成为了闪亮的关键词,例如与记忆相关的海马体(hippocampus)、与情绪相关的杏仁核(amygdala)、与奖赏刺激相关的伏隔核(nucleus accumbens)等。当论文中提到这些大脑结构时,它们到底指的是什么?

要理解神经成像中的大脑结构,首先要明白一点:大脑结构的个体差异非常大。虽然每个大脑的基本构造相似,都有两个半球和一些明显的沟回。但是,这些结构在具体的构成上差别不小:左右半球的对称性、沟回的相对位置和大小等。要从神经成像的角度来研究具体脑区的功能,空间位置的精确性就非常重要:极有可能在相同的位置上,两个人的大脑结构却不一样。

在神经外科手术中,医生们需要了解某个大脑结构的外形特征和相对位置即可,而对于该结构在大脑空间中的绝对位置并没严格的要求。但通过神经成像来研究大脑功能,精确的空间定位变得很重要,因为需要对一群人的大脑功能数据(例如在某种任务下活动的情况)进行比较。而进行统计分析和比较的前提,就是需要有一个共同的参考标准,保证我们谈到某个空间位置时,谈的是每个受试者的同一个脑区。这个参考标准,就是标准大脑图谱(Brain Atlas)。通过将每个人的大脑与标准大脑图谱进行对应之后,我们可以更有把握地认为,即使在不同的受试者的数据中,同样的空间位置指的是同一个大脑结构(在神经成像的数据分析中,这一步叫做空间的标准化,spatial normalization)。

那么问题来了,标准的大脑图谱从哪里来?

大脑图谱的早期工作应该要归功于神经解剖学家们,其中最有名的应该是布鲁德曼(Korbinian Brodmann)在20世纪初的工作。在此之前,关于大脑的不同区域负责不同功能的观点已经随着颅相学的流行而兴起,在布洛卡(Broca)等脑区的功能而得到强化。正是在这种背景之下,布鲁德曼试图去从细胞构筑的角度来寻找大脑功能的定位,正是他工作,形成了神经科学教科书中的布鲁德曼分区(Brodmann areas)。

然而,布鲁德曼关注于脑区的细胞构筑,未从3D空间来建立大脑的模型。3D大脑模型的出现,得益于法国神经解剖学家Jean Talairach,他在于1967年提出一个3D的大脑模型,与Tounoux 于1988年进一步完善此大脑模型。在此模型中,以一些关键的大脑结构作为标记点:大脑前联合(anterior commissure, AC)与后联合(posterior commissure, PC)、两半球中线的矢状面平面和大脑外侧边缘(如下图所示)。在这个3D的空间中,AC-PC连线与中线矢状平面的交界点为0点。在下图带黄框的三个图中,最左图中的横线为X轴,竖线为Y轴,中间和最右的图中,竖线均为Z轴。根据这个3D大脑模型,大脑中每个点均有一个坐标,这就是以Talairach大脑图谱为基础的坐标系统。

Talairach大脑图谱在神经成像的早期研究发挥了重要作用(因为没有其他图谱可以使用),但其缺点也非常明显。它的第一个问题是没有标准大脑的图像模板。也就是说,它缺乏数字的3D大脑模型。这给神经成像研究者带来了很大的痛苦,要知道,神经成像结果基本上都是使用3D图像来进行存储和分析的。缺乏图像3D大脑模板,就意味研究者在数据分析时,必须手动地根据一些标志性的大脑结构来将每个受试者的大脑图像与Talairach的大脑模型进行对应。这种耗时且不精确的做法,在有了替代方案之后很快被抛弃。

除了缺乏大脑的图像模板之外,Talairach图谱中的大脑标本本身也不足以作为标准大脑。此图谱是根据一位60岁女性大脑的解剖结构建立,首先就不具有代表性。更加令研究者不满的是,此图谱仅包括左半球的解剖结构,右半球是将左半球的结构进行镜像反转之后得到的。由于一般人的大脑左右半球并非完全对称,所以这个对称的图谱显得不切实际。第三,Talairach图谱确实将坐标体系中的空间位置与解剖结构进行大致的对应,但是这个对应关系是非常粗略。当初制做图谱是为了给医生在大脑中央的一些脑结构进行手术时提供指导,所以大脑中央部分的脑结构与空间位置的对应关系还相对正确,外侧的皮层对应的准确性则很难令研究者满意。

作为一个为手术而生的大脑图谱,也许我们不能苛求Talairach图谱能够满足神经成像研究的要求。为解决Talairach缺乏图像模板的问题,神经成像研究者建立了自己的标准大脑模板。目前最通用的模板,是加拿大蒙特利尔神经研究所(Montreal Neurological Institute,MNI)于90年代表所建立的MNI系列模板。在最早的尝试中,他们扫描了241个正常志愿者的大脑结构,按照Talairach大脑图谱的方式,使用标志性的大脑结构对每个受试者的大脑进行标定,得到每个大脑的AC-PC线和大脑的外部轮廓,从而每个大脑均与Talairach图谱有相对应的位置。然后对这241个大脑进行平均,得到一个平均脑。

随后,他们又扫描了305个正常人的大脑,使用9个参数将这些大脑进行线性转换,使它们与241个大脑的平均脑进行对应。这305个对应好之后的大脑进行平均,得到平均之后的大脑3D图像。这个图像被命名为MNI305,成为了MNI系列模板中的第一个。

目前使用更为广泛的是ICBM152模板,也是由MNI出品。这个标准大脑模型来自152名年轻成人的高空间分辨率扫描结果。研究者将这些大脑通过仿射转换之后与MNI305进行对应,再将这些152个大脑进行平均,得到了更为清晰的标准模板。这个模板之所以不叫做MNI152而是ICBM152,是因为它被 脑成像国际联盟(International Consortium for Brain Mapping,ICBM) 采用作为标准模板。

值得注意的是,虽然ICBM152采用与Talairach类似的方法进行标定,但是其得到的3D图像却与Talairach的3D空间并不相同,整体上ICBM152会更大一些。同样,Talairach坐标系中的0点在ICBM152中也不再是0点。由于这个原因,MNI的坐标体系与Talairach的坐标体系不能直接等同。

由于受到了脑成像国际联盟的采纳,ICBM152使用得非常广泛,主流的神经成像数据分析软件SPM\FSL\Brainvoyager等均采用该模板作为大脑模板。随后,脑成像国际联盟ICBM又推出一个更具有代表性的模板:ICBM452,将452个人大脑通过转换与ICBM305匹配之后的结果,但是ICBM452的使用范围比较小。

从下图可以看出,MNI305和ICBM152模板中无法清楚地看到每个大脑的结构。为了得到更加清晰的大脑图,MNI对一位研究人员(Colin Holmes)的大脑进行了27次扫描,将这些扫描的结果与MNI305进行配准,然后平均起来得到了更加清晰和精确的MRI图,这就是”Colin27″ 的标准大脑图(下载点这里)。目前,许多基于MNI大脑模板的神经成像结果图均是在Colin27这个图像上进行显示。

虽然MNI有了神经成像的标准大脑模板,但是却缺乏将模板中空间位置与大脑生理解剖结进行对应的图谱,所以MNI系列还只能算是一个模板(template)而不是一个图谱(Atlas)。为了解决这个问题,研究者最初的做法是将MNI坐标转化为成Talairach的坐标,再去使用Talairach大脑图谱进行生理结构的标定。为了进行比较准确地转换,研究者发展出多种算法。由于这两个大脑模板之间“扭曲”并且是非线性的,所以转换起来并非一目了然,在几个转换的算法中,公认比较合理的转换方法是Lancaster于2007年发表的算法。

正如我们在前面提到的,Talairach作为标准大脑图谱本身存在着诸多的缺陷。将MNI坐标转换成Talairach坐标再进行标定的方法,无法避免这些问题。因此在神经成像数据分析方法中(例如Poldrack et al., 2011),研究者极不推荐使用Talairach图谱以及基于其图谱的一些标定方法(比如Talairach Daemon)。将MNI转换成为Talairach坐标再标定解剖结构的途径虽然不太合理,不过这些转换方法本身却仍然有用,因为现有神经成像文献中,MNI和Talairach均有使用,在比较不同文献研究结果时,在坐标间进行转换仍然有价值。

如果Talairach图谱在空间位置与生理结构的对应上不够合理,那么应该使用何种图谱?由于缺乏从生理解剖到3D图像的标准大脑图谱,所以目前没有公认的标准。目前使用比较广泛的,有哈佛-牛津大脑图谱(Harvard-Oxford cortical and subcortical structural atlases)、LONI概率图谱(LONI probabilistic atlas)以及德国尤利希研究中心基于细胞构筑所进行创建的概率图谱(由SPM Anatomy Toolbox进行标定)。总的来说,有几种比较受到认可的标定方法,却没有公认的黄金标准。

最近,在德国尤利希研究中心与MNI共同完成的“Bigbrain”项目中,建立了第一个超高分辨率的大脑3D模型:由7404个组织切片组成的,分辨率达到20微米,几乎精确到了分子级别(免费下载:地址)。这个工作实际上是布鲁德曼工作的继续。超清晰3D大脑模型的建立,有望为今后神经成像提供一个更加标准的大脑图谱,也为今后建立标准3D大脑模型提供了新的途径。

理解标准大脑图谱与生理解剖的关系之后,也许我们会发现,我们在神经成像研究中所看到的大脑结构,其实非常依赖于大脑图谱,经过多次统计处理,包括了太多的统计假设。我们所看到的大脑,其实大部分是Colin Holmes的大脑。了解到这些信息之后,也许我们对神经成像研究结果进行推论时,恐怕会更加谨慎一些。

参考文献:

Amunts, K., Lepage, C., Borgeat, L., Mohlberg, H., Dickscheid, T., Rousseau, M.-É., . . . Evans, A. C. (2013). BigBrain: An Ultrahigh-Resolution 3D Human Brain Model. Science, 340(6139), 1472-1475. doi: 10.1126/science.1235381

Devlin, J. T., & Poldrack, R. A. (2007). In praise of tedious anatomy. NeuroImage, 37(4), 1033-1041. doi: 10.1016/j.neuroimage.2006.09.055Evans, A. C., Janke, A. L., Collins, D. L., & Baillet, S. (2012). Brain templates and atlases. NeuroImage, 62(2), 911-922. doi: http://dx.doi.org/10.1016/j.neuroimage.2012.01.024

Lancaster, J. L., Tordesillas-Gutiérrez, D., Martinez, M., Salinas, F., Evans, A., Zilles, K., . . . Fox, P. T. (2007). Bias between MNI and Talairach coordinates analyzed using the ICBM-152 brain template. Human Brain Mapping, 28(11), 1194-1205. doi: 10.1002/hbm.20345

Poldrack, R. A., Mumford, J., & Nichols, T. (2011). Handbook of functional MRI data analysis: Cambridge Univ Pr.

Zilles, K., & Amunts, K. (2010). Centenary of Brodmann’s map — conception and fate. Nat Rev Neurosci, 11(2), 139-145.

The MNI brain and the Talairach atlas:http://imaging.mrc-cbu.cam.ac.uk/imaging/MniTalairach

如何使用Lakens的完美t检验代码

引子:在最近心理学研究中的重复危机之下,原本分散在各个领域的研究者开始集中起来探讨方法学上的问题,比如R-index这个博客的博主Uli Schimmack,原先是研究主观幸福感的;Dan Lakens主要的兴趣点似乎是在心理距离相关的问题上;而组织起了大规模重复实验的Nosek则做内隐态度研究的。他们集中地批判NHST的问题中,并且试图整理出一些方便易用的小工具来帮助研究者更好使用原本就应该使用的统计方法,比如效应量及其置信区间。

在这个背景之下,Lakens同学写了一段R代码,把t检验非常完整地整合起来。在这个代码中,包括了剔除极端值、正态检验、方差齐性检验、三种t检验的取向(Frequentis, Bayesian, & Robust),以及相应的图(QQplot,直方图,带有置信区间的结果图)。这段代码可能是目前比较方便而全面地进行t检验的小工具,而且其输出是word文档,可以直接放到实验的结果部分去。

这么好的代码,你该如何使用呢?
首先你需要有一个下载R软件以及R-studio(可以自行搜索下载安装);
其次你需要先去下载Lakens的代码及相关文件:https://github.com/Lakens/perfect-t-test。
下载完成之后应该是perfect-t-test-master.zip的压缩包,里面包括了7个文件:两个demo数据(.txt),两个R的markdown文件(.Rmd)、两个PDF文件和一个README文件。

其中,两个Rmd文件分别对应的是独立样本t检验和配对样本t检验。

在R-studio中打开任何一个Rmd文件之后,可以从开始的几行代码中看到一些需要做的准备工作,即安装一些相应的R工具包。基本上只需要按照这段代码前的说明进行操作就行。但是有两个外部的工具需要自己安装:Rtools和JAGS。其中JAGS安装3.0的版本,不要贪图最新的4.0版,这个无法使用。分别下载安装了Rtools和JAGS之后,就可以把Rmd文件中的前几行安装工具包的代码前的#去掉、运行,大约需要一小段时间来安装各种工具包。

安装好了之后,可以直接使用R-studio里面的“Knit Word”来运行这个Rmd文件,试试效果。

点击了knit Word之后,R就开始执行这Rmd文件。如果工具包安装全了的话,最后会出现一个word文档,内包含了前面提到的各种检验。

就我们最常用的Frequentist统计来说,它报告了目前APA第六版中要求的一些统计量:每种条件下的均值、标准差以及两种条件下的相关系数、带原始单位的差异量的均值和标准差、t检验结果、效应及其95%的置信区间(Cohen’s dz、Hedges’ g)。

如果需要对自己的数据进行分析,也并不难,只需在 “Define variables names below” 下面,将变量名进行重新定义即可。主要包括读取自己的数据、定义两种实验条件下的名字。

按照这个Rmd文件给的demo数据,数据的组织也非常直观:

第一列:被试编号;

第二列:条件1下的数据;

第三列:条件2下的数据;

其他列可以忽略,因为在处理的过程中都会被代码忽略掉的。

 

把自己的数据组织好了之后,保存为tab delimited的文本格式(.txt/.dat),如果你喜欢使用csv文件,只需要把读取数据的行代码使用read.csv()替代即可。

定义完变量之后,再按”Knit Word”,输出的就是对你自己数据的t检验了。可以根据自己的需要,取用里面的结果。