【问题标题】:How to run all possible combinations in multiple linear regression model in R如何在 R 中的多元线性回归模型中运行所有可能的组合
【发布时间】:2021-03-05 03:23:04
【问题描述】:

我有一个包含 7 个变量的数据集,我想运行所有可能的组合。我真正想要的是运行选择不同变量的不同方程,例如:

Y = b_0 + b_1*X_1 + b_2*X_2
Y = b_0 + b_1*X_1 + b_2*X_3
Y = b_0 + b_1*X_1 + b_2*X_2 + b_3*X_3
Y = b_0 + b_1*X_1 + b_2*X_2 + b_3*X_3 + b_2*X_4
Y = b_0 + b_1*X_1 + b_2*X_2 + b_2*X_4 
Y = b_0 + b_1*X_1 + b_2*X_4

按此顺序所有可能的组合。我应该如何设置我的循环功能?

【问题讨论】:

  • 谢谢!我对堆栈溢出非常陌生。
  • 搜索所有子集回归。花式数据挖掘。
  • 不推荐。但如果你真的想这样做,请查看this
  • 你也可以检查一下,但可能有更好的方法:stackoverflow.com/a/58946505/10142537

标签: r algorithm loops statistics regression


【解决方案1】:

生成示例数据:

dat <- data.frame(
  Y = rnorm(100),
  X_1 = rnorm(100),
  X_2 = rnorm(100),
  X_3 = rnorm(100),
  X_4 = rnorm(100),
  X_5 = rnorm(100),
  X_6 = rnorm(100),
  X_7 = rnorm(100)
)

找出所有 1 到 7 个变量组合并将它们粘贴到以 Y 作为因变量的公式中:

variables <- colnames(dat)[2:ncol(dat)]
formulas <- list()
for (i in seq_along(variables)) {
  tmp <- combn(variables, i)
  tmp <- apply(tmp, 2, paste, collapse="+")
  tmp <- paste0("Y~", tmp)
  formulas[[i]] <- tmp
}
formulas <- unlist(formulas)
formulas <- sapply(formulas, as.formula)

估计 127 个回归模型:

models <- lapply(formulas, lm, data=dat)

【讨论】:

  • 非常感谢,这正是我要找的!有什么方法可以获取所有 127 个模型的系数值?我看不到他们。
  • lapply(models, coef)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
相关资源
最近更新 更多