R语言回归分析

回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。通常,回归分析可以用来挑选与响应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量。
最小二乘法回归是通过预测变量的加权和来预测量化的因变量,其中权重是通过数据估计而得的参
数,目标是通过减少响应变量的真实值与预测值的差值来获得模型参数(截距项和斜率),具体而言,即使得残差平方和最小。下面将通过几篇博客介绍回归分析,这是第二篇:回归诊断。

一、回归诊断

使用 lm() 函数来拟合最小二乘法回归模型,通过 summary() 函数获取模型参数和相关统计量。但是,没有任何输出告诉你模型是否合适,对模型参数推断的信心依赖于它在多大程度上满足最小二乘法模型统计假设。数据的无规律性或者错误设定了预测变量与响应变量的关系,都将致使模型产生巨大的偏差。一方面,可能得出某个预测变量与响应变量无关的结论,但事实上它们是相关的;另一方面,情况可能恰好相反。

1.1 统计假设

为了能够恰当地解释最小二乘法模型的系数,数据必须满足以下统计假设:

  • 正态性。对于固定的自变量值,因变量值成正态分布。
  • 独立性。Y[i]值之间相互独立。
  • 线性。因变量与自变量之间为线性相关。
  • 同方差性。因变量的方差不随自变量的水平不同而变化。也可称作不变方差,但是说同
    方差性感觉上更犀利。

下面将分别针对这四种假设进行检验:

1.2 基本方法

R基础安装中提供了大量检验回归分析中统计假设的方法。最常见的方法就是对 lm() 函数
返回的对象使用 plot() 函数,可以生成评价模型拟合情况的四幅图形。

#回归诊断
lm.fit5 <- lm(weight ~ height, data=women)
par(mfrow=c(2,2)) #一个平面绘制四幅图
plot(lm.fit5)

1.2.1 正态性

  • 理论解释:当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正
    态分布。

  • 图形显示:数据是否符合正态分布假设可以通过“正态Q-Q图”(Normal Q-Q,右上)图反映出来。若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设。

1.2.2 独立性

无法从这些图中分辨出因变量值是否相互独立,只能从收集的数据中来验证,或者下文有其他方法。

1.2.3 线性

  • 理论解释:若因变量与自变量线性相关,那么残差值与预测(拟合)值就没有任何系统关联。换句话说,除了白噪声,模型应该包含数据中所有的系统方差。

  • 图形显示:数据是否符合线性假设可以通过“残差图与拟合图”(Residuals vs Fitted,左上)反映出来,若该图的点没有任何规律,则满足该假设,若明显的曲线,则暗示应该加上一个多项式。

1.2.4 同方差性

  • 理论解释:因变量的方差不随自变量的水平不同而变化。
  • 图形显示:同方差性可以通过“位置尺度图”(Scale-Location Graph,左下)反映出来,若点在水平线周围附近分布,则满足假设。

1.2.4 “残差与杠杆图”(Residuals vs Leverage,右下)

该图提供了单个观测点的信息,从图形可以鉴别出离群点、高杠杆值点和强影响点,将会在下篇博客——R语言分析-异常观测值中详细讲解,这里只对其概念做大致解释:

  • 离群点:表明拟合回归模型对其预测效果不佳(产生了巨大的或正或负的残差)。
  • 高杠杆值点:表明它是一个异常的预测变量值的组合。也就是说,在预测变量空间中,它是一个离群点。因变量值不参与计算一个观测点的杠杆值。
  • 强影响点:表明它对模型参数的估计产生的影响过大,非常不成比例。强影响点可以通过Cook距离即Cook’s D统计量来鉴别。

1.3 car包方法

car 包提供了大量函数,大大增强了拟合和评价回归模型的能力:

函数 描述
qqPlot() 分位数比较图
durbinWatsonTest() 对误差自相关性做 Durbin-Watson 检验
crPlots() 成分与残差图
ncvTest() 对非恒定的误差方差做得分检验
spreadLevelPlot() 分散水平检验
outlierTest() Bonferroni离群点检验
avPlots() 添加的变量图形
inluencePlot() 回归影响图
scatterplot() 增强的散点图
scatterplotmatrix() 增强的散点图矩阵
vif() 方差膨胀因子

1.3.1 正态性

检验数据是否符合正态性假设,可以使用 qqPlot() 函数。与基础包中的 plot() 函数相比, qqPlot() 函数提供了更为精确的正态假设检验方法,它画出了在n–p–1个自由度的t分布下的学生化残差(studentized residual,也称学生化删除残差或折叠化残差)图形,其中n是样本大小,p是回归参数的数目(包括截距项)。

  • id.method = "identify" 选项能够交互式绘图——待图形绘制后,用鼠标单击图形内的点,将会标注函数中 labels 选项的设定值。敲击Esc键,从图形下拉菜单中选择Stop,或者在图形上右击,都将关闭这种交互模式。
  • simulate=TRUE 时,95%的置信区间将会用参数自助法生成。
library(car)
states <- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy", "Income", "Frost")])
lm.fit6 <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)
qqPlot(lm.fit6, labels=row.names(states), id.method="identify",simulate=TRUE, main="Q-Q Plot")states["Nevada",] #对具有大残差的点进行分析
fitted(lm.fit6)["Nevada"]
residuals(lm.fit6)["Nevada"]
  • 理论解释:当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正
    态分布。

  • 图形显示:若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设,另外可以对其中标注出的数据点可以进行更为细致的分析。

1.3.2 独立性

判断数据是否符合独立性假设可以使用durbinWatsonTest()函数。虽然在前文提过,判断因变量值(或残差)是否相互独立,最好的方法是依据收集数据方式的先验知识。但是 car包提供了一个可做Durbin-Watson检验的函数,能够检测误差的序列相关性。在多元回归中,使用durbinWatsonTest()`函数可以做Durbin-Watson检验:

> durbinWatsonTest(lm.fit6)lag Autocorrelation D-W Statistic p-value1      -0.2006929      2.317691   0.214Alternative hypothesis: rho != 0
  • p值不显著(p=0.214)说明无自相关性,误差项之间独立。
  • 滞后项( lag=1 )表明数据集中每个数据都是与其后一个数据进行比较的。该检验适用于时间独立的数据,对于非聚集型的数据并不适用。
  • simulate=TRUE ,则每次运行测试时获得的结果都将略有不同。

1.3.3 线性

判断数据是否符合线性假设可以使用 crPlots() 函数绘制。若图形存在非线性,则说明你可能对预测变量的函数形式建模不够充分,那么就需要添加一些曲线成分,比如多项式项,或对一个或多个变量进行变换(如用 log(X) 代替 X ),或用其他回归变体形式而不是线性回归。

library(car)
crPlots(lm.fit6)

1.3.4 同方差性

判断数据是否符合同方差性假设可以使用 ncvTest() 函数和spreadLevelPlot() 函数。 ncvTest() 函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性(误差方差不恒定)。spreadLevelPlot() 函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差绝对值与拟合值的关系。

ncvTest(lm.fit6)
spreadLevelPlot(lm.fit6)

1.4 线性模型假设的综合验证

使用 gvlma 包中的 gvlma() 函数,gvlma() 函数由Pena和Slate(2006)编写,能对线性模型假设进行综合验证,同时还能做偏斜度、峰度和异方差性的评价。换句话说,它给模型假设提供了一个单独的综合检验(通过/不通过)。

若 分析结果Decision 下的文字表明违反了假设条件(比如p<0.05),可以使用前面讨论的方法来判断哪些假设没有被满足。

library(gvlma)
gvmodel <- gvlma(lm.fit6)
summary(gvmodel)

1.5 多重共线性

多重共线性可用统计量VIF(Variance Inflation Factor,方差膨胀因子)进行检测。car包中的vif()函数提供VIF值。一般原则下,vif >2就表明存在多重共线性问题。

library(car)
vif(lm.fit6)

R语言回归分析-回归诊断相关推荐

  1. UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定

    UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定 系数的推断与模型预测 模型诊断 这一讲展示一下一元回归中的模型诊断的手段怎么用在多元回归中,同时介绍一下多元回归做推断和预测的方 ...

  2. UA MATH571A R语言回归分析实践 多元回归1 医疗费用的决定

    UA MATH571A R语言回归分析实践 多元回归1 医疗费用 基础回归分析 这一讲开始讨论多元回归,这里选择的例子是寻找家庭医疗费用的决定因素.家庭医疗费用由哪些因素决定是卫生经济学.保险精算等领 ...

  3. UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资 Box-Cox变换 Full Model 模型再诊断 总结 上一讲对一元线性回归模型进行了诊断,发现模型主要存在三个问题: 工 ...

  4. UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资 残差分析 正态性.同方差性的检验 欠拟合检验 前两讲已经完成了大致的分析了,我们已经明确了NBA球员名次与工资的负相关关系,接 ...

  5. UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资 方差分析 相关性分析 上一讲完成了解释NBA球员工资的一个简单的一元线性回归模型的估计.分析,展示了一下简单的预测,这一讲我们 ...

  6. UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资 基础回归分析 571A另一个系列的文章介绍了回归分析的理论,这个系列的文章介绍R语言做回归分析的实践,但不会涉及R语言编程,只 ...

  7. R语言回归分析-改进异常值

    R语言回归分析 回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  8. R语言回归分析-异常观测值

    R语言回归分析 回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  9. R语言回归分析-选择最佳模型

    R语言回归分析 回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

最新文章

  1. catia怎么创建约束快捷键_答疑 | CATIA结构树无法显示怎么办?
  2. hamap java_一篇文章,让你真正了解Java
  3. grunt使用watch和livereload的Gruntfile.js的配置
  4. Python爬虫大杀器之Requests快速入门
  5. libevent学习笔记
  6. oracle的function的语法,Oracle function语法
  7. 第二次尝试修复Hbase2出现Region不一致,使用 HBCK2 - 2021.11.15
  8. chrome调试本地项目, 引用本地javascript文件
  9. 3种更新vCenter Server Appliance 6.5的方法
  10. 只用两行代码,我让Transformer推理加速了10倍
  11. div并排排列的两种方法浅谈。
  12. 如何查看java源码
  13. mac 上的android 模拟器下载地址,在MAC上运行Android手机模拟器
  14. 处理器的排名_齐齐哈尔LPCVD尾气处理器排名推荐
  15. 京剧戏曲电脑主题 +唯美爱心win7主题 +刺猥和苹果卡通主题
  16. Shopee平台集成化智能多店管理系统选“shopeeman”
  17. ASR语音转文字模型——项目落地
  18. vue路由守卫beforeEach和afterEach
  19. 打开APPStore跳转到指定APP
  20. 复古高冷风视频调色luts预设

热门文章

  1. post请求将formdata 转json
  2. jquery.flot 在节点上显示提示
  3. matlab设定坐标轴范围和坐标轴显示
  4. 全球5G发展呈现九大趋势。
  5. (私人收藏)[开发必备]最全JQuery离线快速查找手册(可查询可学习,带实例)
  6. html5+css搭建一个网页创意画框效果/案例演示
  7. Solidworks如何标注垂直度,平行度
  8. Fresco+Recycleview+OKhttp+Retrofit
  9. H5实现一键复制微信并打开微信跳转好友添加页
  10. 咖说 | 暗潮涌动,ERC20 BTC 正在搅动市场