R语言

语言学与R语言的碰撞

Xu & Yang

PhoneticSan

学习参考

Discovering Statistics Using R

Statistics for Linguistics with R

How to Do Linguistics with R

R in Action

Analyzing Linguistic Data

R Graphics Cookbook

··· ···

Recap

  1. 重复测量方差分析可以类比为扩展版的配对样本t检验,它是让同一组个体参加了所有不同的处理条件,可以在ezANOVA( )函数中添加within=...语句实现重复测量分析。

  2. 当出现两个以上的因素时,我们可以采用双因素/多因素方差分析,探测主效应和不同因素之间的交互效应。

  3. 当方差分析出现显著性差异后,我们进行事后检验来进一步确定是哪一个因素出现了显著性差异,调用TukeyHSD( )函数可以完成事后检验,还有其他事后检验函数可以使用。

R: The R Project for Statistical Computing

https://www.r-project.org/

RStudio:

https://rstudio.com/

R Project

Linguistics

1

 相关与回归

在生活中,我们遇到过这样的问题:人的身高和体重有关系吗?于是,你开始记录并观察许多人的身高和体重,得到相应的散点图。在这个过程中,你实际上就是在探索身高与体重的相关性。相关(correlation)是用来描述和测量两个变量之间关系的统计分析方法,很多情况下是对没有控制或操纵情况下变量的观察。

相关示意图

对于变量间的相关性,我们主要从三个方面进行描述。其一,关系的方向。在确定了变量之间有相关性后,我们需要描述相关性是什么方向的,包括正相关(positive correlation)和负相关(negative correlation)。前者即两个变量同向移动(如上图所示),后者即两个变量向相反方向移动。其二,关系的形式。上图所示是一个典型的线性相关,换句话说,我们可以画一条直线来帮助我们表明关系。其三,关系的程度,这个描写也是测量相关性的重要一步,即相关分析测量与特定相关形式的拟合程度。以上图为例,如果我们根据两个变量做一条直线,那么我们得到的数据和这条直线的匹配程度是多少,我们用相关系数(correlation coefficient)来解释,越接近0表示相关性越小。有很多相关系数用以描写,日后我们再细谈。

不同的相关方向

在一开始我们就提到,上面的相关是我们通过观察和描写得到的结果。我们继续以身高体重为例,通过观察我们发现身高和体重呈现正相关。如果我想问你观察里没有的数据,比如没有182cm数据,它对应的体重「可能」是多少呢?正如上面提到,我们可以「拟合」一条直线来描述相关性,那么自然的可以通过这条直线来「预测」数据。这种分析思路,即所谓的回归分析(regression analysis)。回归分析是根据一个或多个预测变量来「预测」结果变量的方法。换句话说,我们可以理解为通过得到的样本中的自变量和因变量关系,来预测结果的方法。根据预测结果的类型,我们将回归分析主要分为线性回归(linear regression)、非线性回归(non-linear regressin)、logistic回归(logistic regression)等等。

线性回归

一般情况下,在语言学研究中,我们最常见的回归分析往往是线性回归和logistic回归,其中的线性回归分析我们会使用到多种模型,如GLM、GLMM等,今天我们首先从最简单的线性回归讲起。

R Project

Linguistics

2

 简单的线性回归

在开始线性回归分析之前,首先需要你调动一下高中数学课的一些知识。在高中我们也提到过线性回归方程,它本质上就是对数据的拟合。现在我们假定有一数据集中变量之间是成比例的关系,比如年轮与树龄的关系,那么这种关系我们就可以简单地用数学公式表述为Y=b1X。其中b1是我们熟悉的斜率(slope),这就是得到的回归方程,也就是拟合的模型。如果这个模型完美地适配我们的观察结果,那么所有的数据都应当落在这条直线上。

模型完美拟合观察数据的结果

但是,大多数情况下,我们不可能得到这样完美的拟合结果,数据都会或多或少地有一些偏差(error),因此我们需要把偏差考虑进去。这里的偏差,指的是数据与我们拟合结果的偏离程度。因此,在多数情况下,我们的拟合是加入了偏差得到的结果。这时,回归方程可以修订为Yi=b1X + εi,其中εi是数据的偏移程度。

考虑偏差后的拟合

最后,我们回顾下一个标准线性方程是由直线的斜率和截距(intercept)两部分组成的,截距是当x为0时y的值。比如年龄与身高的关系,在出生为0岁时,我们的身高不可能是0厘米,因此我们把0岁时的身高作为拟合方程的截距。这下,我们就可以得到一个完整的线性回归模型了:Yi = b0+ b1Xi+ εi,其中b0b1称为回归系数(regression coefficient),而i可以表示第i个被试得到的结果。通过拟合的模型,我们便可以预测结果了。

语言学中线性回归模型示例

下面我们通过语言学实例进一步说明线性回归分析的过程。首先要确定系数。比如我们探索词频是否对阅读时间有影响,可以看出自变量是词频,因变量是阅读时间,那么Yi就是这里的阅读时间,b0是在考虑所有其他自变量之前,不同被试的阅读时间的平均值,b1是自变量词频,它反映词频在多大程度上影响阅读时间。

回归系数我们都已经确定好了,那该如何确定拟合的模型可以很好地反映搜集到的数据呢?换句话说,我们该怎么用它来进行显著性检验呢?这里使用最小二乘法(least squares)进行检验。回归线是为了寻找最能契合数据的直线,这也就意味着,每个数据到这个回归线的距离是最小的,这个距离即实际观察/搜集得到的数据与拟合的模型之间的差,被称为残差(residual),其实就是最开始我们提到的εi。而最小二乘法则是使用残差平方和计算来确定我们的回归线拟合程度如何。

残差与最小二乘法

现在,我们做一个假设检验:H0表示词频对阅读时间没有影响,即阅读时间的平均值足够预测了。为了进行检验,我们需要计算总平方和SST(通过计算不同数值距离与均值的差值的平方和得到)和残差平方和SSR(通过计算不同数值与回归曲线的残差的平方和得到),二者的差值可以得到模型的平方和SSM,即回归线与均值的差值,三者关系为SST = SSM + SSR

Model Sum of Squares

可以看到,SST代表总变异程度,SSM代表拟合的线性模型的变异程度,SSR代表模型中的误差。可以看到,最关键的是SSM,它是与模型息息相关的变异系数。因此判断一个线性模型的拟合程度,我们期望SSM要远大于误差SSR引起的效应。如何定义?我们使用R2判定拟合优度,是SSM和SST的比值,它和皮尔逊相关系数(Person Correlation Coefficient)有一定关系,我们之后会介绍。R2在[0,1]之间浮动,越接近1说明拟合越好,反之越差。当拟合程度较高时,我们才可以进一步说明变量的关系。

R Project

Linguistics

3

 R语言实现

介绍完简单线性回归分析的基本逻辑后,我们下面进行R语言的实战。首先我们使用的函数为lm( )函数,“lm”代表了linear model,它的主要构成部分如下:

lm(outcome ~ predicators, data=...)

我们需要注意,在这个函数中,前一个是你的因变量y,后一个才是你的自变量x。我们以languageR包中的english数据为例,即上面我们的回归分析示意图。加载之后,我们使用summary( )函数观察数据中都有哪些内容,可以看到有很多东西。我们以其中RTlexdec和WrittenFrequency为例。

english数据

根据lm( )函数的构成方式,我们探索WrittenFrequency对RTlexdec的影响,那么RTlexdec应该在前,并把模型结果赋值给一个变量名以供我们方便调用检查(这一步是很必要的,之后我们介绍其他模型之间的比较时会很方便),代码如下:

eng.m <- lm(RTlexdec ~ WrittenFrequency, data=english)

建模完毕后,我们使用summary( )函数来查验结果具体结果如下图所示。

lm( )函数建模结果

在estimate一栏,从上到下依次表示截距和斜率,Pr则是显著性检验结果,R2则在倒数第二行,你会发现有两个数值,前者是上面我们提到的,后者是针对你的预测变量数而进行的修改。换句话说,当你不断添加新的变量到回归模型中时,只有当新项超过“偶然下才会出现”的预期时,修正后的R2才会变动。可以看到我们这次的拟合优度非常低,说明它不是一个很好地拟合,需要添加其他内容,这里我们暂时忽略这个问题。假设我们拟合得很好,下一步就是检测WrittenFrequency是不是真的对RTlexdec有影响。为了评估模型的相关性,我们需要将它与null model进行比较。null model则是将predicator变为“无”,具体如下。

base.m 1, data=english)

进行拟合后,我们将两个模型进行比较,使用anova( )函数即可,这里不能使用ezANVOA( )函数,因为它并不能比较线性模型。运行后我们可以看到,两个模型间有显著性差异,说明我们添加的WrittenFrequency是一个对RTlexdec会产生影响的因素。

F-test结果

到这里,最基本的线性回归分析就介绍完毕了。为什么需要进行回归分析?其实很多情况下,我们采用拟合回归线,可以很好地解释线性变化的连续数据,比如基频,可以更好的解读某因素对基频是否具有显著性影响,而不会因为方差分析“第几个点有显著性差异,第几个点没有”而不知如何解释的情况。懂得最基本的逻辑后,我们就可以进一步探索其他回归分析方法了。

—END—

排版:Xu & Yang

R 回归 虚拟变量na_R语言 | 回归分析(一)相关推荐

  1. R 回归 虚拟变量na_R语言 | 生存分析之R包survival的单变量和多变量Cox回归

    生存分析之R包survival的单变量和多变量Cox回归续前文生存分析(Survival Analysis). 在前文初步简介了生存分析的概念,以及展示了一种生存分析模型Kaplan-Meier的使用 ...

  2. R 回归 虚拟变量na_互助问答第85期:虚拟变量和空间面板回归问题

    问题一:设置虚拟变量如何做工具变量处理 使用tobit模型回归时,被解释变量为连续变量,解释变量为分类变量,因研究重点需要将分类变量具体分析,因此将解释变量虚拟变量处理,回归时命令为tobit y i ...

  3. R 回归 虚拟变量na_工具amp;方法 | R语言机器学习包大全(共45个包)

    机器学习,是一门多学科交叉的人工智能领域的分析技术,它使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测. 目前,常见机器学习的研究方向主要包括决策树.随机森林.神经网络.贝叶斯学习和支 ...

  4. R 回归 虚拟变量na_如何优雅地计算多变量

    作者:包寒吴霜 中科院心理所硕士在读(名字/人格/社会/文化心理学) 知乎:https://www.zhihu.com/people/psychbruce 社会科学研究经常会遇到"超多变量& ...

  5. R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素

    最近我们被客户要求撰写关于虚拟变量(Dummy Variables) 回归的研究报告,包括一些图形和统计输出. 简介 本文与以下两个问题有关.你应该如何添加虚拟变量?你应该如何解释结果? 如果使用一个 ...

  6. r语言 分类变量 虚拟变量_R语言中的变量

    r语言 分类变量 虚拟变量 R语言| 变数 (R Language | Variables) In the previous tutorial, we have come across the bas ...

  7. r语言 回归分析 分类变量_R语言 | 回归分析(二)

    R语言 语言学与R语言的碰撞 Xu & Yang PhoneticSan 学习参考 Discovering Statistics Using R Statistics for Linguist ...

  8. 哑变量或虚拟变量介绍(dummyvar)

    虚拟变量介绍 虚拟变量是指回归分析中使用的一个数值变量来代表你的研究中的样本的子组.在研究设计中,一个虚拟变量经常被用来区分不同的治疗组.在最简单的情况下,我们会使用一个0,1的虚拟变量,其中一个人是 ...

  9. R语言定量方法:回归,虚拟变量和交互项,假设检验:F 检验、AIC 和 BIC分析学生成绩数据带自测题

    最近我们被客户要求撰写关于学生成绩的研究报告,包括一些图形和统计输出. 回归假设 省略变量偏差 如果真实模型包括X 1 和X 2 ,但我们忘记了X 2,那么 - 在某些情况下 - 对X的估计将会有偏差 ...

  10. R语言一般线性模型(涉及因变量是虚拟变量(哑变量))

    R语言的一般线性模型 R语言的一般线性模型用函数:lm(),即可轻松实现. 例子 建立一般线性模型 NC.glm1 = lm(fmri.SFG_R_CerebellumGM_L ~ age + gen ...

最新文章

  1. 少年郎,你为什么没有对象?是缺点“土味情话”
  2. 机器学习数学基础:随机事件与随机变量
  3. APP开发两年的心得:App代码架构设计(1)
  4. 在centos7升级nodejs
  5. python中语法错误-Python3 错误和异常
  6. 无限极分类不知pid_PHP实现无限极分类
  7. Skaffold:让K8S开发工作变得简单
  8. 对springMVC的简单理解
  9. JS正则限制价格输入 0.01~ 99999.99
  10. android音量图标不见了,电脑声音图标不见了如何解决?
  11. 【POJ - 2019】Cornfields(二维st表,模板)
  12. format python value error_格式化计算变量时出现“ValueError:无效的格式说明符”
  13. BootStrap修改modal模态框的宽度
  14. 《Python游戏趣味编程》第12章 坚持一百秒
  15. 用div代替textarea,实现在文本框中使用回车br和设置字体功能
  16. ElementUI:tree给节点添加icon图标
  17. 手把手教你做iOS的soap应用(webservice)
  18. android阴影edittext,android – 将阴影效果添加到EditText字段
  19. 俄罗斯方块C++代码(转载他人代码)
  20. 【侯捷】C++内存管理机制

热门文章

  1. packet协议源码解析
  2. 【VUE】微商城(十一)----购物车下订单,选择收货地址,商品详情页立即购买,取消订单,查看订单详情
  3. Drupal8 自定义主题开发实战记录
  4. 支付系统总结 ( 收单,收银,资产交互,账务 )
  5. 洛谷-P1957 口算练习题
  6. 阿里巴巴字体库使用方法
  7. 硬盘柱面损坏怎么办_硬盘坏道屏蔽工具,详细教您如何修复硬盘坏道
  8. 秀米编辑器如何排版svg推文,以展开为模板讲解
  9. 如何把pdf分割成多个?怎么把pdf文件分成多个?
  10. Ubuntu 修改 apt 源为阿里云源