对 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)
我正在运行一堆回归;它们主要在因变量上有所不同,但在一些自变量上也有所不同。
但是,它们都有一组通用的控件,所以我希望能够调用类似(启发式)的方法:
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)