在相关关系一文中,我们探讨了俩数值型变量的相关问题,其中相关系数可反映相关性大小和方向,相关性检验可验证相关系数的可靠性。
但很多时候,仅靠相关分析来研究变量关系是不够的,为了获得更精确的数量关系并进一步做一些推断,有必要引入新的模型方法。
回归分析可以说是最简单的统计模型,但简单并不意味着不好用,就我而言,通常会把线性回归作为一个基准,来对比其它模型的效果。
下面介绍一种常用的回归模型:多元线性回归
引例: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,从图形看也能知道,预测值与真实值其实并不十分吻合,很可能有其它未引入模型的解释变量或者是因为模型的形式问题,比如多项式,这需要结合实际进一步处理,要注意的是拟合优度往往不必过分关注,影响了模型的可解释性和应用就得不偿失了。
来源:CSDN
作者:老身聊发少年狂
链接:https://blog.csdn.net/weixin_43850016/article/details/103941247