R中具有鲁棒聚类标准误差的Logistic回归

dan*_*ire 8 regression r stata

一个新手问题:有没有人知道如何在R中运行带有聚类标准错误的逻辑回归?在Stata它只是logit Y X1 X2 X3, vce(cluster Z),但不幸的是我还没有想出如何在R中进行相同的分析.提前感谢!

Dav*_*d F 14

您可能希望查看rms(回归建模策略)包.那么,lrm是逻辑回归模型,如果fit是输出的名称,你会有这样的事情:

fit=lrm(disease ~ age + study + rcs(bmi,3), x=T, y=T, data=dataf)

fit

robcov(fit, cluster=dataf$id)

bootcov(fit,cluster=dataf$id)
Run Code Online (Sandbox Code Playgroud)

你必须指定x=T,y=T在模型中声明. rcs表示受限的三次样条曲线,3节.

  • 这个答案已经很好,但如果可以完全复制,则可以改善。我不知道变量来自哪里,输出是什么,以及为什么需要rcs(bmi,3)。 (2认同)

小智 6

另一种选择是使用sandwichandlmtest包,如下所示。假设这z是数据集中包含聚类指标的列dat。然后

# load libraries
library("sandwich")
library("lmtest")

# fit the logistic regression
fit = glm(y ~ x, data = dat, family = binomial)

# get results with clustered standard errors (of type HC0)
coeftest(fit, vcov. = vcovCL(fit, cluster = dat$z, type = "HC0"))
Run Code Online (Sandbox Code Playgroud)

会做这项工作。


Mic*_*ico 5

这两天一直在纠结这个问题;我神奇地发现了一个新包,它似乎注定要完成伟大的事情——例如,我还在我的分析中运行了一些集群鲁棒的 Tobit 模型,这个包也内置了该功能。更不用说语法比我见过的所有其他解决方案干净(我们谈论的是接近 Stata 级别的干净)。

因此,对于您的玩具示例,我会运行:

library(Zelig)
logit<-zelig(Y~X1+X2+X3,data=data,model="logit",robust=T,cluster="Z")
Run Code Online (Sandbox Code Playgroud)

等等!

  • 大约三年后,集群功能没有恢复:`glm.control(cluster = "group") 中的错误:未使用的参数 (cluster = "group")`。 (5认同)
  • 不幸的是,我认为该命令在最新版本的“Zelig”(在 CRAN 上)中不起作用。我刚刚运行了一些带有和不带有 `cluster` 参数的模型,并且标准错误完全相同。我相信从 4.0 版本开始就是这样,这是我最后一次使用该软件包。 (2认同)

小智 5

glm.clusterR 包中有一个命令miceadds,它似乎为逻辑回归提供了与 Stata 使用选项相同的结果vce(cluster)请参阅此处的文档。

在本页的一个示例中,命令

mod2 <- miceadds::glm.cluster(data=dat, formula=highmath ~ hisei + female,
                              cluster="idschool", family="binomial")
summary(mod2)
Run Code Online (Sandbox Code Playgroud)

给出与 Stata 命令相同的稳健标准误差

logit highmath hisei female, vce(cluster idschool)
Run Code Online (Sandbox Code Playgroud)

例如,变量 的标准误差为 0.004038 hisei