R-4.多元线性回归

丶灬走出姿态 提交于 2020-01-21 00:41:59

相关关系一文中,我们探讨了俩数值型变量的相关问题,其中相关系数可反映相关性大小和方向,相关性检验可验证相关系数的可靠性。

但很多时候,仅靠相关分析来研究变量关系是不够的,为了获得更精确的数量关系并进一步做一些推断,有必要引入新的模型方法。

回归分析可以说是最简单的统计模型,但简单并不意味着不好用,就我而言,通常会把线性回归作为一个基准,来对比其它模型的效果。

下面介绍一种常用的回归模型:多元线性回归

引例:R包一个自带数据集,50行5个变量,其中"Murder"作为本次实验的因变量,“Population”、“Illiteracy”、 "Income"和"Frost"作为自变量。

在这里插入图片描述
- 模型表达式
accurate_murder=b+k1Population+k2Illiteracy+k3Income+k4Frost

- 参数估计

fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data = states)
summary(fit)

在这里插入图片描述
- 模型诊断
即使得到了参数估计的结果,也不是拿来就能用的,还需要进行一些统计检验,就多元线性回归而言,我们关注:a.多重共线性;b.残差的独立、正态、无自相关;c.回归系数的显著性;d.模型整体的显著性。

  • 多重共线性
    即解释变量间的相关性问题,因为都是数值型变量,可以参考相关分析,对本实验4个解释变量进行相关性检验,并输出P值小于0.05的结果,容易看出多重共线性还蛮严重。
library(psych)
rr<-corr.test(states[,-1])
rr<-rr[["p"]]
for (i in 1:4) {
  for (j in c(1:4)[-i]) {
    test<-rr[i,j]
    k<-c(rownames(rr)[i],colnames(rr)[j])
    ifelse(test<=0.05,print(k),print(""))
  }
}

在这里插入图片描述
用逐步回归来解决这个问题,最后删去了两变量,保留了Population 和Illiteracy,经过上面的分析可知,这俩变量不相关,多重共线性已消除。

summary(step(fit))

在这里插入图片描述

  • 残差图
    从下面图形容易看出,除个别异常值以外,残差基本符合经典假定。在这里插入图片描述
  • 回归系数和整体模型的显著性
    在这里插入图片描述
    从回归系数t检验的P值来看,population和illiteracy两解释变量都很显著,从整体显著性F检验的P值来看,模型整体也是显著的。
    从调整后的R平方来看,0.5484,跟最初引入四变量的0.5285相比,有稍许改进。

- 结果分析
最终多元回归方程为:
accurate_murder=1.652+2.242X10^-4Population+4.081Illiteracy
其它条件不变,人口每增加1万,谋杀率平均上升2.242个百分点;
其它条件不变,文盲率每增加1个百分比,谋杀率平均上升4.081个百分点。

#做预测
predict(fit,newdata = df)

真实值与预测值如图所示:
在这里插入图片描述
拟合优度为0.5484,从图形看也能知道,预测值与真实值其实并不十分吻合,很可能有其它未引入模型的解释变量或者是因为模型的形式问题,比如多项式,这需要结合实际进一步处理,要注意的是拟合优度往往不必过分关注,影响了模型的可解释性和应用就得不偿失了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!