felm功能在lapply内部不起作用

时间:2017-04-19 11:36:27

标签: r lapply

这是来自

的后续问题

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函数:

https://cran.r-project.org/web/packages/lfe/lfe.pdf

0 个答案:

没有答案