点击“蓝字”关注我们吧

1 导言

回归分析是一个古老的话题。一百多年前,英国的统计学家高尔顿(F. Galton,1822-1911)和他的学生皮尔逊(K. Pearson,1857-1936)在研究父母和其子女身高的遗传关系问题中,统计了1078对夫妇的平均身高以及他们的一个成年儿子的身高数据。

他们将孩子的身高作为自变量 ,父母的平均身高作为因变量 ,然后将两者画在同一张直角坐标系上。结果,他们发现这些数据点“惊人的”位于一条直线的附近,并且经过计算得到了直线的拟合方程:

这个结果看起来是违背直觉的。因为统计的结果表明,高个子父母的子女有低于父母身高的趋势;而矮个子的子女则有高于父母的趋势。高尔顿解释说,自然界存在某种约束力将人的身高向某个平均数靠拢——或者说是回归——也即是统计学上回归的涵义。

本期我们的主题便是通过R来解决线性回归分析中的若干问题。

2 基础回顾

回归的概念来源于实际问题,那么现在我们所说的线性回归分析问题具体指的是什么呢?一般说来,如果我们研究的问题中的 个自变量 , , , 和因变量 的关系形式如下所示:

那么我们就说这是一个线性回归问题,其中 是随机误差项, 表示第 个观测。在线性回归问题中我们的核心任务就是估计出未知参数 , , , 的值。

注意,线性回归问题的确定并不是通过自变量的形式,而是问题中待估计的未知参数最高次都为一次且关于未知参数呈线性关系。如 和 也是线性回归问题。

通常在线性回归中估计未知参数方法是最小二乘法(OLS),而为了保证估计值能够很好的解释模型,我们又有如下前提条件:

  • 正态性: 服从正态分布。
  • 独立性: 之间是独立的。
  • 线性性: 和 必须线性相关。
  • 同方差性: 的方差不变。

这些条件又被称为高斯—马尔可夫条件,它们保证了在经典线性回归中最小二乘估计的优越性。

3 求解线性回归模型函数

3.1 极大似然法

最小二乘法和极大似然法都可以用来求解线性回归模型,我们在往期文章中讨论过最小二乘法,这里对似然法进行简单介绍。

假设我们得到下面一组观测数据:

那么根据高斯-马尔可夫假设,我们可以得到残差估计的似然函数为

这个式子的成立还需要假设残差分布的均值为 ,标准差为 。这个假设是可行的。因为残差如果均值不为零,可以将其移到模型的截距项里。

如何通过上面的函数得到系数的估计值呢?极大似然的思想便是,让这些估计值使得似然函数达到最大! 这个想法很朴素:每个观测数据随机且互相独立,我们一次搜集便得到眼前的数据,那么自然而然认为这些数据组合出现的概率是最大的。

不过,数据已经搜集好便不能改动。我们自然想到,系数的估计值便是让这些数据对应的概率可能性最大——也即是似然函数最大。

现在假装大家已经理解了极大似然的原理,下面我们来求解它。直接最大化不太可行,我们通常对似然函数取对数得到对数似然函数

然后再分别对各个参数进行优化。限于篇幅,不再赘述。

3.2 R求解线性回归模型

我们可以利用现有软件进行模型求解。在R中求解线性回归问题的最基本函数就是lm(),其格式为:

myfit # formula 是要拟合的模型形式,用一个R公式表示# data 就是模型的数据构成的数据框

下面我们解释一下formula具体的形式,首先看下表总结的formula中常用的符号。


如果自变量为 , 和 而预测变量为 ,我们假定的线性模型形式为:

那么formula可以写成:

y ~ x1 + x2 + x3# 或者为 y ~ .

其他形式的模型formula的表达式还请读者自行琢磨。

当模型拟合成功后,我们使用summary()函数来得到拟合的具体结果。而其他常用的获取线性回归模型拟合结果的函数如下表所示。


4 实例分析

下面我们将用实例具体介绍lm()函数的使用方法。

4.1 简单线性回归

本例中我们使用基础安装中的数据集women数据,它记录了15个年龄在30~39岁间女性的身高和体重信息,我们现在来探究体重关于身高的关系。

myfit summary(myfit) # 展示拟合详细结果

程序的输出结果如下所示程序的输出结果如下所示

无交互项模型输出结果

这里主要给读者解释这么几项指标的含义:

  • Residuals:体重预测值和真实值之差的统计信息,从左到右分别为最小值、下四分位数、中位数、上四分位数和最大值。
  • Coefficients:第一列(Estimate)中(Intercept)对应的数值为截距项,height对应的即为身高变量前的估计系数。
  • Multiple R-squared:介于0-1之间,越接近1说明线性关系越强。
  • p-value:模型的F检验统计量的p值,值越小说明模型越可靠。

因此本例中体重和身高的回归方程为:

根据R方(Multiple R-squared)和p值(p-value)可知模型是可靠的。此外,我们可以作图观察最终的拟合结果。

无交互项拟合图

4.2 具有交互项的线性回归

继续考虑上例,如果模型中存在一个交互项比如一个平方项,那么即有:

myfit summary(myfit) # 展示拟合详细结果

程序的输出结果如下所示。

有交互项模型输出结果

可以看到通过比较R方、p值,添加了平方项的线性模型效果更好。我们同样可以做出相应的图像。

有交互项拟合图

5 结语

本期我们主要介绍了R中线性回归分析的简单操作方法。不过,这里仅仅涉及线性回归分析的冰山一角,关于线性回归问题中的回归诊断和异常点的判断等内容,限于篇幅这里就不做介绍了。有兴趣的读者可以学习《R in action》第8章中关于回归的讲解。

扫码关注我们小Q统计专注统计学习知识分享

plor 回归的r方_简单线性回归模型相关推荐

  1. plor 回归的r方_线性回归中的R方是什么意思

    展开全部 R²是指拟合优度,是回归e5a48de588b63231313335323631343130323136353331333431366261直线对观测值的拟合程度. 表达式:R2=SSR/S ...

  2. plor 回归的r方_【回归分析】R、R平方与调整后的R平方

    原标题:[回归分析]R.R平方与调整后的R平方 回归分析,是对两个或两个以上变量之间的因果关系进行定量研究的一种统计分析方法.回归分析,也是我们进行需求预测常用的一种因果建模方法. 我们做回归分析时, ...

  3. plor 回归的r方_这是为冒险家和直男准备的车 KTM 790ADV R!

    情人节还没过去多久,眼瞅着马上就到3.8号了,不知道从什么时候开始,情人节变成了男人的购物节,妇女节被喊成女神节,一切的节日都与少不了浓郁的商业气息.不少男人为了在这"残酷的社会" ...

  4. R语言使用lmPerm包应用于线性模型的置换方法(置换检验、permutation tests)、使用lm模型构建简单线性回归模型、使用lmp函数生成置换检验回归分析模型

    R语言使用lmPerm包应用于线性模型的置换方法(置换检验.permutation tests).使用lm模型构建简单线性回归模型.使用lmp函数生成置换检验回归分析模型(Permutation te ...

  5. python建立回归模型_简单线性回归的Python建模方法

    简单线性回归,就是两个随机变量存在一定大小的相关系数的前提下,结合散点图观察,采用最小二乘OLS方法,尝试建立一条回归直线,使得误差平方和SSE最小.OLS是一种参数方法,通过确定直线的斜率b和截距a ...

  6. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用attributes函数查看线性回归模型的属性信息、获取模型拟合对应的残差值residuals

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用attributes函数查看线性回归模型的属性信息.获取模型拟合对应的残差值residuals 目录

  7. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、可视化散点图并添加简单线性回归直线、添加模型拟合值数据点、添加拟合值点和实际数据点之间的线段表示残差大小、col参数自定义设置

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.可视化散点图并添加简单线性回归直线.添加模型拟合值数据点.添加拟合

  8. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用residuls函数从模型中提取每个样本点的残差值、可视化残差与拟合值之间的散点图来看残差的分布模式

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用residuls函数从模型中提取每个样本点的残差值.可视化残差与拟合值之间的散点图来看残差的分布模式 目录

  9. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用residuls函数从模型中提取每个样本点的残差值、计算残差和和残差平方和

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用residuls函数从模型中提取每个样本点的残差值.计算残差和和残差平方和 目录

最新文章

  1. 一首考研人不得不看的立志诗!!!!!!
  2. java不四舍五入_JAVA-四舍五入之坑
  3. python的subprocess模块执行shell命令
  4. Hackthissite realistic 6解密题后的记录
  5. Vue 下拉刷新及无限加载组件 - 有你便是晴天 - 博客园
  6. MyEclipse的Debug模式
  7. 8类网线利弊_知识积累 | 千兆网线和百兆网线有何区别?
  8. linux内核makefile详解,linux kernel编译Makefile和Kconfig,make menuconfig详解
  9. 2440 linux文件写,添加yaffs2文件系统 - Linux2.6.39在S3C2440上的移植_Linux编程_Linux公社-Linux系统门户网站...
  10. C++ Primer 5th 第1章 开始
  11. @Transactional(rollbackFor=Exception.class)的作用
  12. php小h站视频系统源码,苹果cms v10x 原创自适应x站h站源码 视频模板 带试看功能 带自动采集YM源码...
  13. c语言stdio函数大全,初学者常用的stdio库,原来还有这么多知识点
  14. win10的windows聚焦锁屏界面图片在哪个文件夹的问题解决
  15. Spring Cloud如何可用于微服务架构
  16. 车辆ECU综合测试系统研究
  17. Visual Studio 2019 发行说明
  18. echarts自定义地图总结(VUE)
  19. FXO和FXS的区别
  20. Forever小浮的数学推公式专题题解

热门文章

  1. linux虚拟磁盘管理pe大小6,Linux下磁盘的高级管理——LVM逻辑卷管理
  2. navicat 导入csv未响应_使用navicat将csv文件导入mysql
  3. 计算机主板用塑料做的好吗,太震惊!你的键盘是否用了黑心塑料?
  4. 整数数组查找java_使用Java编写程序以查找整数数组中的第一个非重复数字?
  5. android的百度地图sdk获取ip,基于百度地图API的ip地址查询
  6. 文件上传 java web_JavaWeb 文件上传下载
  7. python程序设计狄光智_Python程序设计
  8. Linu网络判断指令ping、curl、telnet的区别与应用场景
  9. linux下面显示所有正在运行的线程
  10. Selenium3自动化测试——18.窗口截图