R 多元线性回归和逐步回归

2019-04-17  本文已影响0人  上校的猫

多元线性回归

我们使用 mtcars 数据集来演示。

library(dplyr)
df <- mtcars %>% select(-c(am, vs, cyl, gear, carb))
View(df)
  1. 连续变量
    例如我们相同其中几个变量(disp ,hp ,dra,twt)来预测 mpg。
model <- mpg ~ disp + hp + drat + wt
fit <- lm(model, df)
fit
## Call:
## lm(formula = model, data = df)
##
## Coefficients:
## (Intercept)         disp           hp         drat           wt  
## 29.148738     0.003815    -0.034784     1.768049    -3.479668  

也可以通过下面方式查看更多细节

summary(fit)
anova(fit)

可视化

par(mfrow=c(2,2))
plot(fit)
Rplot.png
  1. 因子型变量
model <- mpg~ disp + hp + drat + wt + cyl + vs+ am+ gear + carb
df <- mtcars %>%
  mutate(cyl = factor(cyl),
         vs = factor(vs),
         am = factor(am),
         gear = factor(gear),
         carb = factor(carb))
summary(lm(model, df))

逐步回归

目的是筛选出最佳变量,更好拟合。下面是使用olsrr包自动筛选所有变量。

library(dplyr)
library(olsrr)

df <- mtcars %>%
  mutate(cyl = factor(cyl),
         vs = factor(vs),
         am = factor(am),
         gear = factor(gear),
         carb = factor(carb))

model <- mpg~.
fit <- lm(model, df)
test <- ols_step_all_possible(fit)
plot(test)

test结果中会给出所有变量组合,并给出了拟合度 rsquare 值。


image.png

R-squared(值范围0-1)描述的 输入变量对输出变量的解释程度。在单变量线性回归中R-squared 越大,说明拟合程度越好。然而只要曾加了更多的变量,无论增加的变量是否和输出变量存在关系,则R-squared 要么保持不变,要么增加。So, 需要adjusted R-squared ,它会对那些增加的且不会改善模型效果的变量增加一个惩罚向。结论,如果单变量线性回归,则使用 R-squared评估,多变量,则使用adjusted R-squared。在单变量线性回归中,R-squared和adjusted R-squared是一致的。另外,如果增加更多无意义的变量,则R-squared 和adjusted R-squared之间的差距会越来越大,Adjusted R-squared会下降。但是如果加入的特征值是显著的,则adjusted R-squared也会上升。
作者:王发北
来源:CSDN
原文:https://blog.csdn.net/wwangfabei1989/article/details/80656668
版权声明:本文为博主原创文章,转载请附上博文链接!

下面我去试验下

我有65个变量,用这种方法需要多久,毕竟计算所有组合是很大的,我用服务器试一下,emmm
如果不行可要换其他回归策略了

试验结果

我宛如智障,一种排列组合C(65,33) = 3609714217008131600,更别说其他情况一起累加了,结果太大直接无法写入了,看下报错


image.png

当然有其他挑选变量的办法,有向前回归,向后回归和逐步回归,也有许多R包可以实现。我采用逐步回归,试了 MASS 包中的 stepAIC(fit, direction = "both") 和 olsrr 包中的 ols_step_both_aic(fit),结果一致。

参考

上一篇下一篇

猜你喜欢

热点阅读