我经历了一系列的回归;它们主要在因变量上有所不同,但也有几个独立的变量。
然而,所有人都有一套共同的控件,所以我希望能够像(启发式)那样打电话:
lm(y~x_idiosyncratic+common_controls,data=data)
在R中执行此操作的最佳方法是什么?
Stata非常容易, a la :
local myx "x1 x2 x3 x4 x5 x6 x7 x8 x9 x10"
regress y `myx'
这是我提出的(受到公式页面的启发),但看起来有点笨拙;有人知道更清洁的东西吗?
controls<-paste(paste0("z",1:30),collapse="+")
idiosyncratic1<-paste(paste0("x",1:10),collapse="+")
reg1<-lm(as.formula(paste0("y1~",idiosyncratic1,controls)),data=data)
idiosyncratic2<-paste(paste0("xx",1:10),collapse="+")
reg2<-lm(as.formula(paste0("y2~",idiosyncratic2,controls)),data=data)
等等。
这对运行健壮性检查也很有帮助 - 可以简单地重新定义控件集:
controls2<-paste(paste0("zz",1:20),collapse="+")
所以我想尽可能干净地做到这一点。
答案 0 :(得分:3)
似乎你想要update
命令。它允许您轻松地从公式中添加/删除术语。
head(mtcars) # using mtcars for the example
# Create your common controls in a formula
common <- ~ cyl + hp + drat
# Add the response and an additional predictor
new_form <- update(common, mpg ~ . + wt)
# Run the regression
reg <- lm(new_form, data = mtcars)