如何在R中方便地添加大量回归量?

时间:2014-09-29 08:04:58

标签: r regression

我必须在回归中添加大约30个虚拟变量。

如果我的变量名为dummy1 - dummy30,我会在STATA中用星号通配符表示。它只是regress y dummy*STATA会添加所有以' dummy'开头的变量。

任何人都可以在[R]中提示我使用类似的方便程序来阻止我写出30个变量名吗?

2 个答案:

答案 0 :(得分:4)

您有两种选择。要么data.frame的子集只包含虚拟*变量和因变量。在这种情况下,您可以致电lm(dep ~ ., data = your.data)。 dot参数将假设您尝试使用除dep以外的所有预测变量。 要仅data.frame depyour.data[grepl("dep|dummy", names(your.data)), ]和预测变量的子集,您可以使用formula(paste("dep ~", paste("dummy", 1:10, sep = "", collapse = "+")))

第二个选项是使用paste构建一个公式参数。

{{1}}

答案 1 :(得分:2)

函数reformulate是基于字符串创建公式的正确选项。

示例数据框:

set.seed(1)
dat <- data.frame(y = rnorm(10), 
                  dummy1 = rnorm(10),
                  dummy2 = rnorm(10),
                  dummy3 = rnorm(10),
                  other = rnorm(10))

现在,grep用于查找所有dummy*个变量。结果用于函数reformulate

form <- reformulate(grep("^dummy", names(dat), value = TRUE), response = "y")
# y ~ dummy1 + dummy2 + dummy3

此公式可用于lm

lm(form, dat)
# Call:
#   lm(formula = form, data = dat)
# 
# Coefficients:
#   (Intercept)       dummy1       dummy2       dummy3  
# 0.04785      0.09323     -0.63404     -0.19547