在R中一次丢弃一个预测器

1 statistics r linear-regression

假设我有4个预测变量x1,x2,x3,x4.我希望有一个代码可以一次删除每个预测器.

例如

set.seed(10)
y<-c(1:20)
x1<-c(1:20)*runif(20,min=0,max=2)
x2<-c(1:20)*runif(20,min=0,max=2)
x3<-c(1:20)*runif(20,min=0,max=2)
x4<-c(1:20)*runif(20,min=0,max=2)

lm1<- lm(y~x1+x2+x3+x4) #full model 

#drop each predictor once 

lm2.1<- lm(y~x2+x3+x4)
lm2.2<- lm(y~x1+x3+x4)
lm2.3 <- lm(y ~ x1+x2+x4)
lm2.4 <- lm(y ~ x1+x2+x3)
Run Code Online (Sandbox Code Playgroud)

等等

Sve*_*ein 5

drop1如果您想查看每个术语的贡献,可以使用:

drop1(lm1)

# Single term deletions
# 
# Model:
# y ~ x1 + x2 + x3 + x4
#        Df Sum of Sq    RSS    AIC
# <none>              104.15 43.002
# x1      1    15.465 119.61 43.771
# x2      1    64.166 168.31 50.602
# x3      1    29.485 133.63 45.987
# x4      1     0.910 105.06 41.176
Run Code Online (Sandbox Code Playgroud)

这类似于anova(lm1, lm2.1, lm2.2, lm2.3, lm2.4).