《R在语言科学研究中的应用》述评 《R在语言科学研究中的应用》述评

Page content

书评作者简介:

钱家骏,现为上海海事大学外国语学院翻译系教师。博士毕业于上海外国语大学英语学院翻译学方向。担任美国肯特州立大学翻译与翻译技术研究与创新中心成员(CRITT)。研究方向为翻译过程、翻译技术和语料库翻译学。参与国家社科基金项目2项、上海市哲学社会科学项目1项。曾担任ESCI期刊Asia Pacific Translation and Intercultural Studies匿名评审。研究成果发表在《外语教学与研究》《外国语》《外语界》《解放军外国语学院学报》和《西安外国语大学学报》上。

1. 引言

     自20世纪90年代以来,语言学研究历经了一次“量化转向”(quantitative turn)(Kortmann, 2021)。据Kortmann统计,发表在English Language and Linguistics的论文中,利用高级统计方法(如线性或逻辑斯蒂回归)的文章数也逐年递增。但目前语言学研究者在统计方面仍与行为科学、神经科学领域有一定的差距,且研究结果面临可重复性危机(同上, pp. 1211-1221)。《R在语言科学研究中的应用》一书由上海交通大学外国语学院学术著作出版基金资助,于2021年10月在科学出版社出版,是国内语言科学领域数据处理与分析方面的最新力作。作者吴诗玉教授具有丰富的心理语言学实证研究经验,是ESCI期刊 Journal of Second Language Studies 的联合执行主编,在SSCI和CSSCI期刊上发表了许多心理语言学方面的实证研究论文。本书拥抱开放科学(open science)的理念,以具体案例为抓手,将语言科学领域中的数据处理、数据可视化和统计分析的过程全方位展现,并附有相关R语言代码和原始数据,是语言学实证研究初学者必读的书籍。全书共有七章,下面分别进行介绍。

2. 内容简介

     第一章主要介绍基于tidyverse包在R中的数据处理。这一章的核心思想是引导初学者形成强烈的“变量意识”。作者根据Wickham & Grolemund(2017)提出的R语言“干净、整洁”的数据框应符合的三条标准,介绍了一些在R中常用的数据框操作函数。例如,unite()函数可以将两个变量合并成一个变量。这一函数对于翻译认知加工数据的处理也有启发:比如,研究者可以使用unite()函数将被试(Part)和任务(Task)进行合并,例如P01_T3则表示第01号被试的人工翻译任务数据。又如,无论是对于反应时数据,还是眼动数据,研究者通常需要对这些行为数据的异常值(outliers)进行剔除。而filter()函数则为实现该操作提供了可能。在本章中,作者也介绍了如何利用filter()函数筛选出正确率等于1,以及剔除反应时低于200毫秒、高于平均数2.5倍标准差的数据。再如,眼动实验研究者有时需要计算兴趣区的平均注视时长(average fixation duration),而眼动数据表中通常只有兴趣区的总注视次数(total fixation count)和总注视时长(total fixation duration),此时则可以通过mutate()函数在已有的变量基础上生成新的变量,这一函数也在该章中重点介绍。

     本章还介绍了一些比较基础的正则表达式,如利用str_c()将两个变量合并;利用str_sub()函数截取相关字符;利用str_extract()提取相关内容(如提取Frost诗歌中的所有名词)等,作为一个数据科学家,除了常常要面对数值型的数据以外,还可能会面对非结构化的文本数据,因此正则表达式的知识就显得非常重要。此外,本章还重点介绍了数据表的合并。除了介绍传统的rbind()和cbind()函数之外,该章还重点介绍了生成新变量的表格合并(如利用inner_join()、left_join()等)和不生成新变量的表格合并方法(如利用anti_join()和semi_join())。

     第二章和第三章是第一章的进阶和深入,主要基于具体的案例对数据框的操作进行讲解。本书作者强调,一个成熟的研究者,在开展研究时,不仅要考虑实验设计本身,还要关注数据整理问题(p. 83),因为后者可能会决定论文产出的效率。通常来说,从在线问卷系统中导出的数据表无法直接用于统计分析。而第二章则主要涉及问卷量表数据的处理,采用的两个案例选自作者本人开展的关于汉/英第三人称代词的可接受度判断实验。第三章则主要涉及反应时行为数据的处理,采用的案例为作者及其团队关于中国英语学习者词汇与概念表征的发展研究(吴诗玉等,2017)。因为大部分数据清理工作在E-prime软件里即可完成,所以第三章并没有介绍如何在RStudio中清理反应时数据,而是主要介绍如何在RStudio中进行数据探索或描述性分析。作者在第三章主要以问题驱动的方式来介绍数据探索的过程,例如,“问题7:一共有多少被试的平均准确率低于60%?去除平均准确率低于60%的被试,重新计算被试在每种实验条件下判断正确的平均反应时”(p. 117)。这句话看似很简单,初学者会误以为这不需要作者消耗太多的精力完成来写完之句话,但其实需要研究者进行严密的逻辑来完成代码的撰写,需要综合运用tidyverse包中的group_by()、summarize()和filter()函数才能回答这一问题,这也是实证研究论文的“结果部分”必不可少的环节。此外,作者还利用ggplot2把数据探索的结果进行可视化,这也是实证研究中非常重要的组成部分,不仅有利于读者或同行评审专家更加直观地了解数据的大致趋势,也可以为研究者进行统计建模后的数据解读提供一定的参考依据。

     第四章和第五章侧重统计学的原理,第四章主要介绍了概率分布,即离散变量分布:二项分布(binomial distribution)和泊松分布(poisson distribution),以及连续变量分布(正态分布、t分布和2分布)。概率分布这一概念看似有些抽象、晦涩,但这对统计建模有着至关重要的意义,因为数据分布的特点,决定了统计建模方法的使用。例如,作者指出语言加工中的准确率数据符合二项分布,而语料库中的频数计数则符合泊松分布,同时作者也引用了Winter(2020)的观点,即泊松分布在语言科学领域最容易被忽视。在翻译认知过程研究领域,有一些研究者如Vieira(2014)将眼动数据中的总注视次数进行了对数转换(logarithmic transformation),尽可能减少数据的偏态(skewness),以期达到正态分布,最后利用线性模型进行了统计分析。但值得注意的是,眼动的注视次数是整数(integers),属于离散变量,符合泊松分布,而应采用广义线性模型中的泊松回归。

     第五章则主要介绍假设检验的原理和步骤。本章在开篇即强调“统计分析的目的是通过样本的统计量(statistic)对总体参数(parameter)进行估计”(Gravetter, F. J., & Wallnau, 2017, p. 5)。本章重点介绍了在正态分布、t分布和2分布视阈下的零假设显著检验(null hypothesis significance test, NHST)的步骤。该章并没有特别着重介绍“统计量”的具体计算过程,而是通过简单描述计算过程,引导读者对统计量背后意义的思考。例如,本章就详细介绍了F值的计算过程,以让读者理解方差分析的本质,即“切割差异的过程”(p. 151)。此外,作者还特地强调了效应量(effect size)这一概念的重要性,因为统计量本身是一个比值,可能无法反映实验效果的真实大小。值得注意的是,许多科学家对p值有误读,美国统计协会(American Statistical Association, ASA)在2016年曾发表了一项统计显著性和p值的声明(Statement on Statistical Significance and P-Values)(Wasserstein & Lazar, 2016),提出了6条原则,以期规范学者对p值的解读。本章也用通俗易懂的语言,对p值的内涵进行了讲解,即p值并非零假设为真的概率,而表示样本出现的概率(p. 158)。

     第六章主要介绍ggplot2作图。主要基于Wickham(2016)的ggplot2: Elegant Graphics for Data Analysis一书,并结合作者自己的实验和语料库数据进行讲解。本章首先介绍了ggplot2作图的基础语法,强调数据(data)是可视化的前提,图层是数据的呈现形式,其核心是geom_function()函数的设置问题,而图层内部则是映射(mapping),旨在将数据中的变量映射到图形属性上。需要注意的是,初学者往往忽视了geom_bar()函数的默认设置是统计频数(stat=“count”),而非统计摘要(stat=“summary”),但期刊论文中通常是需要绘制自变量在每个条件的平均数,作者针对这一点在本章中特别进行了强调,并对比了错误的代码和正确的代码,让读者更加清楚如何在图层中进行统计转换(stat)(pp. 170-171),也从侧面体现作者具有丰富的ggplot2作图的教学和实践经验。此外,本章还以中国英语学习者和英语本族语者对singular they的可接受度和Dickens的两本小说(A Tale of Two Cities和Pickwick Papers)中的情感词为案例,讲解分页函数facet_wrap()和facet_grid()的使用,因为这两个案例的数据中,每个分类变量都有两个或两个以上的水平,以便更加直观的了解变量之间的关系(如交互效应)。本章还重点介绍了实验数据之外的作图知识,主要通过theme()、coord()和annotate()函数实现。例如,当横坐标的变量水平比较多时,则可以采用coord_flip()函数,而如果同行评审专家要求在图中注明效应量(r square, r^2^),则可以使用annotate()函数。

     第七章主要介绍实验设计、t检验、方差分析和回归模型。这一章节相当于前几章内容的整合和应用。本章并没有一开始就介绍t检验、方差分析和回归模型的应用,而是先介绍实验设计的概念、标准和类型。因为实验设计会影响统计方法的使用。例如,独立测量的被试间设计和重复测量的被试内设计所采用的统计方法是不同的。本章中“实验设计”主要侧重控制被试在实验过程中的学习效应或顺序效应。作者介绍了拉丁方设计这一平衡抵消的技术,来减少任务顺序对实验结果产生的影响。作者基于自己开展的语言加工实验为例,利用图表的方式,清晰形象地展现了当自变量的水平(n)分别为偶数和奇数时,拉丁方设计的具体方法。需要指出的是,本章的“实验设计”虽然没有详细介绍如何对自变量进行操控,以及对与被试、实验材料和实验设备相关的无关变量进行控制,但在7.2.2 独立样本t检验这一小节中,介绍了该检验方法的应用场景,例如外语研究经常需要控制被试的外语水平,则研究者可以用该方法看两组被试的外语水平是否有显著差异,这一统计结果往往会在实验设计部分报道,作者也提供了相关代码供读者参考。在作者看来,t检验、方差分析(F检验)的本质都是回归,只是本书主要面对初学者,因此本章着重介绍t检验和方差分析的应用场景和统计假设前提。作者还特地指出了初学者常见的问题,即初学者经常用多次t检验来取代方差分析,但这么做会显著增加统计的一类错误(Type I error)(p. 242)。值得注意的是,本章详细介绍了在进行多自变量方差分析过程中如何在R中利用emmeans()函数进行事后检验(post hoc test),并附上了报道统计结果的范例,这对初学者非常友好。

3. 简评

     本书内容丰富,从数据框的基本操作到统计原理,再到数据可视化和统计分析,展现了一套完整的语言学研究过程。本书的特点总结如下:

     1. 从真实的语言学研究案例出发,讲解语言科学数据的处理。Wickhman & Grolemund (2017)在介绍tidyverse包时,并没有结合语言学研究的具体案例展开。但本书则结合心理语言学实验的特点,强调了left_join()函数的作用。无论是反应时实验,还是眼动实验,大多是重复测量的实验设计,而研究者都可能会单独让被试填写问卷,汇报语言学习年数、翻译经验,或者测试被试的工作记忆容量等。这些具有被试个体特征的变量通常作为协变量放入统计模型中。这就导致行为数据表中的行数远大于被试个体特征数据表,而left_join()函数则为高效地将行为数据和被试个体特征数据进行合并提供了可能性。无论是第二章,还是第三章,作者都在处理数据前介绍了研究背景、被试、材料和程序,因为如果不了解研究设计,那读者就不知道数据中有哪些变量,大脑中就无法“模拟”构建一个“数据框”,也就无法整理出“干净、整洁”的数据框,从这一点可以看出作者的独具匠心。

     2. 利用通俗易懂的语言讲解概率分布和假设检验的原理。总得来说,本书与吴诗玉(2019)的《第二语言加工及R语言应用》在概率分布上的内容大同小异。不同之处在于:第四章结合具体实例和R语言中的函数(例如,dbinorm()、pbinorm()、dnorm()、pnorm()等)进行讲解,这样可以更加清楚t分布和自由度(df)以及与正态分布之间的关系;F值、卡方值(2)与自由度的关系,这是本章区别于Gravetter & Wallnau(2017)的Statistics for the Behavioral Sciences(第十版)的一大特色。又如,作者在介绍t分布视域下的NHST时,利用qt()函数简要介绍了关键区(critical region)的临界t值,这也从侧面告诉读者,临界t值还取决于自由度的大小,并非一成不变。这对语言学研究者在解读t检验,或者混合效应模型中的t值时,也大有裨益。

     3. 拥抱开放科学,R代码清晰易读。本书在“本书使用说明”中便附上本书的所有代码和相应的数据,以便学习者可以更加直观地了解基于R语言的数据表结构,从而形成“变量意识”。值得注意的是,本书的代码按章节分开呈现,方便读者查阅,这也是优于Gries(2021)Statistics for Linguistics with R的地方。此外,从认知工效学角度来看,本书将代码生成R Markdown,附在正文中,相比吴诗玉(2019)的《第二语言加工及R语言应用》,本书的阅读体验会更好。

     但本书仍存在以下不足之处:

     1. 混合效应模型方面的案例较少。本书4.2 离散变量分布这一小节中提到“后面的章节可能会涉及拟合泊松回归的混合效应模型的例子”,但通读全书以及查阅附代的R语言代码,笔者并没有发现相关泊松回归的案例。对泊松回归感兴趣的读者,可参看吴诗玉(2019)《第二语言加工及R语言应用》一书中4.5 广义线性模型:泊松回归这一小节,亦或查看Winter & Bürkner(2021)使用brms包进行泊松回归分析的教程。
     2. 统计学概念的介绍存在“跳跃性”。本书没有花费太多篇幅介绍统计学原理上,这是本书的一大特色,但这也会导致前文中提到的一些统计学概念的定义,在后文中才会出现。例如,第三章作者在利用ggplot2作图前,先计算了一下标准误(standard error, SE)(p. 115),但是这一概念在上文中并没有提及,反而是在第5章 假设检验的原理中提到了标准误的定义和计算方式(p. 148)。为了更方便读者查阅相关统计学概念,建议本书再版时,新增统计学概念的附录索引页,或者在提到相关统计学概念时,在正文中注明相关页码,读者可查阅第几章第几页,以了解该统计学概念的具体定义。

     3. 缺少“反面教材”的案例。鲍贵(2012)曾对我国外语教学研究中的统计方法进行了调查研究,发现在2005~2009年间,仅有58%的研究正确使用t检验。在本书的7.2.3 配对样本t检验这一小节中,作者也提到“配对样本t检验也非常普遍,同样初学者也很容易误用”(p. 228),但作者并没有列举“反面教材”的案例,如能呈现误用的案例,则更有利于教师加以借鉴应用在语言学统计方法课程中。
     4. 拉丁方设计内容与统计分析脱节。虽然多数研究会采用平衡抵消法,来避免实验任务顺序对被试产生的学习效应或疲劳效应,与关键预测变量对因变量的影响相混淆,但这些学习效应和疲劳效应本身的噪音(noise)依旧存在于数据中,会导致统计分析犯二类错误(Type-II error),即假阴性(Baayen et al., 2008, p. 399)。因此,有必要告诉读者将任务顺序作为协变量/控制变量放入统计模型中。 然而,瑕不掩瑜,本书是语言科学领域的宝贵资源。从理论角度,书中在概率统计和假设检验的原理方面有深入的探讨;在应用层面,本书结合大量具体的语言科学实证研究的案例,向读者展示如何进行数据处理、数据探索、数据可视化、数据分析和结果报道,为应用语言学、心理语言学研究者搭建了“脚手架”,也为推进我国外语学科的“科学化”进程作出了贡献。

参考文献:

Baayen, R. H., Davidson, D. J., & Bates, D. M. 2008. Mixed-effects modeling with crossed random effects for subjects and items [J]. Journal of Memory and Language, 59(4), 390-412.

Gravetter, F. J., & Wallnau, L. B. 2017. Statistics for the Behavioral Sciences (10th ed.) [M]. New York: Cengage Learning Press.

Gries, S. T. 2021. Statistics for Linguistics with R: A Practical Introduction (3rd revised ed.) [M]. Berlin/Boston: Walter de Gruyter GmbH.

Kortmann, B. 2021. Reflecting on the quantitative turn in linguistics [J]. Linguistics, 59(5), 1207-1226.

Vieira, L. N. 2014. Indices of cognitive effort in machine translation post-editing [J]. Machine Translation, 28(3): 187-216.

Wasserstein, R. L., & Lazar, N. A. 2016. The ASA Statement on p-Values: Context, Process, and Purpose [J]. The American Statistician, 70(2): 129-133.

Wickham, H. 2016. ggplot2: Elegant Graphics for Data Analysis (2nd ed.) [M]. Switzerland: Springer.

Wickham, H., & Grolemund, G. 2017. R for Data Science: Import, Tidy, Transform, Visualize, and Model Data [M]. CA: O’Reilly Media.

Winter, B. 2020. Statistics for Linguists: An Introduction Using R [M]. New York and London: Routledge.

Winter, B., & Bürkner, P. C. 2021. Poisson regression for linguists: A tutorial introduction to modelling count data with brms [J]. Language and Linguistics Compass, 15(11). doi:10.1111/lnc3.12439

鲍贵. 2012. 我国外语教学研究中的统计分析方法使用调查 [J]. 外语界(1): 41-51+60.

吴诗玉. 2019. 第二语言加工和R语言应用 [M]. 北京: 外语教学与研究出版社.

吴诗玉、马拯、胡青青. 2017. 中国英语学习者词汇与概念表征发展研究:来自混合效应模型的证据 [J]. 外语教学与研究, 49(5): 767-779.