这是来自
的后续问题Automate regression with specific dependent and independent variables
此代码使用plm包中的plm函数处理。但是,我想用lfe包中的felm函数来估计相同的模型,以获得按空间聚类的标准错误(在我的情况下是县)。
这是数据集:
regDf <- data.frame(year = rep(seq(1966,2015,1), 8),
county = c(rep('first', 50), rep('second', 50), rep('third', 50), rep('fourth', 50),
rep('fifth', 50), rep('sixth', 50), rep('seventh', 50), rep('eighth', 50)),
crime1 = runif(400), crime2 = runif(400), crime3 = runif(400),
uvar1 = runif(400), uvar2 = runif(400), uvar3 = runif(400),
var1 = runif(400), var2 = runif(400), var3 = runif(400), var4 = runif(400), var5 = runif(400))
此代码有效
set.seed(123)
#a helper function to create "log(var)" from "var"
fn_appendLog = function(x) {
paste0("log(",x,")")
}
modelList = lapply(1:3,function(x) {
indepVars2 = Reduce(function(x,y) paste(x,y,sep="+"),lapply(colnames(regDF)[grepl("^v",colnames(regDF))],fn_appendLog))
#> indepVars2
#[1] "log(var1)+log(var2)+log(var3)+log(var4)+log(var5)"
indepVars1 = fn_appendLog(paste0("uvar",x))
depVar = fn_appendLog(paste0("crime",x))
formulaVar = formula(paste0(depVar, " ~ ",indepVars1,"+", indepVars2))
#> formulaVar
#log(crime1) ~ log(uvar1) + log(var1) + log(var2) + log(var3) + log(var4) + log(var5)
modelObj = plm(formulaVar, model = 'within', effect = 'twoways', data = regDf)
})
此代码的目的是使用 n 不同的唯一自变量和 x 公共自变量来估计 n 不同模型。
新代码仅在此行中有所不同:
modelObj = felm(formulaVar | county + year | 0 | county, data =regDf)
felm 函数的语法如下:
第一部分由普通协变量组成,第二部分由要预测的因子组成。第三部分是IV规范。第四部分是标准错误的集群规范。
具体来说,这意味着我有一个估计的模型(formulaVar),具有县和年固定效应,没有IV(0)和聚集的s.e.按县。
发生以下错误:
术语错误(公式(as.Formula(公式),rhs = 1),特价=&#34; G&#34;): 对象&#39; county&#39;找不到
N.B。,在估算lapply函数之外时,例如:
felm <- felm(log(crime2) ~ log(uvar2) + log(var1) + log(var2) + log(var3) | county + year | 0 | county , data = regDf)
该功能完美无缺。更多关于lfe包的felm函数: