分享

练习R:stepAIC多元逐步回归

 数据小兵 2021-06-01

用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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多