使用lm指定具有所选术语的模型

时间:2015-02-07 17:28:44

标签: r linear-regression

对于那些熟悉R

的人来说非常简单
full <- lm(hello~., hellow)

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

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

如何在不必输入变量的个别名称的情况下(因为这非常繁琐),从整个群体中指定一定数量的变量?

我试过

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)]'

1 个答案:

答案 0 :(得分:3)

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)

应该有效。 (适用于此示例。)

我刚刚遇到了一个更简单的解决方案;只需先选择您想要的列/变量:

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