R:具有组固定效果的回归和具有插补数据集的聚类标准错误

时间:2017-03-25 12:41:19

标签: r regression stata

我试图在R中运行回归(多个模型 - 泊松,二项式和连续),其中包括群体(例如学校)的固定效应,以调整一般群体级差异(基本上是由群体贬低)和群集标准误差考虑组中参与者的嵌套。我也在使用插补的数据帧(用鼠标创建)运行这些。似乎不同的学科使用不同的“固定效果”这个短语,所以我很难找到排除故障的方法。

我有适合随机拦截模型(使用lme4),但它们没有考虑学校固定效应(并且随机效应对我的研究问题不感兴趣)。把这些团体作为傻瓜放慢速度会大大减缓。我也可以使用组假人运行单级glm / lm,但是我无法找到使用插补数据对标准错误进行聚类的策略(尝试使用clusterSE包)。我可以用手来计算贬值,但似乎应该有更直接的方法来实现这一目标。

我也看了一下lfe包,但似乎没有glm选项,demeanlist功能似乎与推算的数据帧不兼容。

在Stata中,命令将是xtreg,fe vce(群集变量),(fe =固定效果,vce =群集标准误差,添加mi以在插补数据帧上运行)。我可以切换到Stata进行建模,但如果可能的话,我肯定更喜欢和R一起使用!

请让我知道,如果在交叉验证中更好地发布这个内容 - 我当时已经开始使用了这个,因为它似乎更像是一个编码问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

我会阻止引导程序。 "块"处理聚类和" bootstrap"处理生成的回归量。

可能有一种更优雅的方法可以将其扩展到其他估算器,但这应该可以让你开始。

# junk data
x <- rnorm(100)
y <- 1 + 2*x + rnorm(100)
dat1 <- data.frame(y, x, id=seq_along(y))
summary(lm(y ~ x, data=dat1))

# same point estimates, but lower SEs
dat2 <- dat1[rep(seq_along(y), each=10), ]
summary(lm(y ~ x, data=dat2))

# block boostrap helper function
require(boot)
myStatistic <- function(ids, i) {
  myData <- do.call(rbind, lapply(i, function(i) dat2[dat2$id==ids[i], ]))
  myLm <- lm(y ~ x, data=myData)
  myLm$coefficients
}

# same point estimates from helper function if original data
myStatistic(unique(dat2$id), 1:100)


# block bootstrap recovers correct SEs
boot(unique(dat2$id), myStatistic, 500)