对 R 中的许多回归使用一组定义的控件

Using a defined set of controls for many regressions in R

我正在运行一堆回归;它们主要在因变量上有所不同,但在一些自变量上也有所不同。

但是,它们都有一组通用的控件,所以我希望能够调用类似(启发式)的方法:

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'

这是我的想法(灵感来自 ?formula 页面),但它看起来有点笨拙;有没有人知道更清洁的东西?

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="+")

所以我想要一种尽可能干净地执行此操作的方法。

您似乎需要 update 命令。它允许您轻松地从公式中 add/drop 项。

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)