是否存在用于解释线性模型(lm)中变量的替换(或完全删除)函数?

问题描述 投票:1回答:1

这是我在stackoverflow.com上遇到的第一个问题,请随时指出我在“问问题”中的错误以及代码错误。顺便说一句,英语不是我的母语,所以我会尽力而为。

我有一个线性模型,其中包含许多解释变量(独立变量)

model <- lm(y ~ x1 + x2 + x3 + ... + x100)

其中一些线性相互依赖(多重共线性)。

[我希望机器搜索具有最高VIF系数(例如x2)的解释变量的名称,将其从公式中删除,然后使用新公式运行旧的lm函数

model <- lm(y ~ x1 + x3 + ... + x100)

我已经学习了如何获取具有最高VIF系数的解释变量的名称:

max_vif <- function(x) {
  vifac <- data.frame(vif(x))
  nameofmax <- rownames(which(vifac == max(vifac), arr.ind = TRUE))
  return(nameofmax)
}

但是我仍然不明白如何搜索所需的解释变量,将其从公式中删除并再次运行函数。

谢谢!

r linear-regression lm
1个回答
0
投票

我们可以使用update函数并粘贴在需要删除的列中。这是一个例子:

fit1 <- lm(wt ~ mpg + cyl + am, data = mtcars)
coef(fit1)

# (Intercept)         mpg         cyl          am 
#  4.83597190 -0.09470611  0.08015745 -0.52182463 

rm_var <- "am"
fit2 <- update(fit1, paste0(".~. - ", rm_var))
coef(fit2)

# (Intercept)         mpg         cyl 
#  5.07595833 -0.11908115  0.08625557 
© www.soinside.com 2019 - 2024. All rights reserved.