练习R:stepAIC多元逐步回归

用R做多重线性回归,除了lm()外还要再学习一个stepAIC()。而且R逐步回归是基于AIC指标的,这和SPSS基于显著性概率p值(或F值)不同。
所以R的逐步回归结果不一定会和SPSS完全一致。先打一个预防针。
此前我利用SPSS练习过一个多重线性回归的案例,地址如下:
SPSS案例实践:多重线性回归分析
现在将使用R来拟合逐步回归的模型,可以用上面这篇SPSS的结果与之对比对照。

线性关系观察

美国各州犯罪率数据,首先观察因变量murder与各自变量的线性关系。绘制一个散点图加相关矩阵。
chart.Correlation(murder[,-4], histogram=TRUE,method="pearson",pch=19)
多个自变量与murder间存在一定线性关系,不排除一些是存在非线性关系的,咱们暂先略过或者直接踢掉非线性的。

强制拟合线性关系

用lm()拟合多重线性回归模型。
fit <- lm( Murder~ Population+Income+Illiteracy+HsGrad+Frost+Area, data=murder )summary(fit)
第一个模型fit有统计学意义(P<0.001),6个自变量中有3个不显著的,有必要优化一下。

逐步回归筛选变量

采用MASS包的stepAIC逐步回归做变量筛选
step.fit <- stepAIC(fit,direction = "both")summary(step.fit)
首次逐步回归所得模型step.fit有统计学意义(P<0.001),但是我们发现有一个不显著的保留在当前模型中。这就是基于AIC指标筛选的特点,和SPSS不同。
怎么办呢?大家看Hsgrad变量,p值为0.167,还蛮大的。还应该继续优化调整。此时实际上可以直接降其剔除。
如果再啰嗦一下,那么继续让R提供依据。我们用drop1()函数看看R的意见。
drop1(step.fit)
假设我们继续剔除hsgrad,你猜模型会怎么变化呢?AIC会微微小增大一点(92.13到92.28),然后误差平方和也是小幅的增加一点,应该对模型的影响不是很大,ok,那我们就把它干掉。

重新拟合模型

重新拟合新模型
opt.lm <- lm( Murder~Population + Illiteracy + Area, data = murder)summary(opt.lm)
现在最新模型opt.lm有统计学意义(P<0.001),校正R方0.57。我们发现保留了3个自变量,area的p值为0.075,可认为是边缘显著。
咱们不要0.05那么绝对。
所以,最后我们的模型为:
hat(Y)=4.002*ill+0.00022*pop+0.0000074*area+1.228
我们基于SPSS的最终模型为:
hat(Y)=4.359*ill+0.00025*pop+1.052
差异是可见的,总体来说自变量方向一致,偏回归系数略有微小变化,另外R的模型多了一个边缘显著自变量。
欢迎讨论。

本文完
文/图=数据小兵

(0)

相关推荐