使用 lm 指定具有选定项的模型

specify model with selected terms using lm

对于熟悉 R 的人来说非常简单

full <- lm(hello~., hellow)

在上述规范中,使用了线性回归并且 hello 正在针对数据集 hellow 中的所有变量建模。

我在hellow中有33个变量;我希望将其中一些指定为自变量。这些变量的名称带有含义,所以我真的不想将它们重命名为 x1 x2

我怎样才能在不必键入变量的各个名称(因为这很乏味)的情况下,从整个变量中指定 select 个变量?

我试过了

full <- lm(hello~hellow[,c(2,5:9)]., hellow)

但是它给了我一个错误"Error in model.frame.default(formula = hello ~ hellow[, : invalid type (list) for variable 'hellow[, c(2, 5:9)]'

reformulate 将在给定变量名称的情况下构造一个公式,例如:

(先构建数据):

set.seed(101)
hellow <- setNames(as.data.frame(matrix(rnorm(1000),ncol=10)),
                   c("hello",paste0("v",1:9)))

现在运行代码:

ff <- reformulate(names(hellow)[c(2,5,9)],response="hello")
full <- lm(ff, data=hellow)

应该可以。 (适用于此示例。)

我刚刚想到一个更简单的解决方案;只是 select 你想要的 columns/variables 第一个:

hellow_red <- hellow[,c(1,2,5,9)]
full2 <- lm(hello~., data=hellow_red)
all.equal(coef(full),coef(full2))  ## TRUE