一个新手问题:有人知道如何在R中运行带有聚类标准错误的逻辑回归吗?在Stata中它只是logit Y X1 X2 X3, vce(cluster Z)
,但遗憾的是我还没有想出如何在R中进行相同的分析。提前感谢!
答案 0 :(得分:13)
您可能希望查看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)
您必须在模型语句中指定x=T
,y=T
。 rcs
表示受限制的三次样条曲线具有3节。
答案 1 :(得分:2)
过去两天我一直在反对这个问题。我神奇地发现了似乎是一个似乎注定要用于伟大事物的新软件包 - 例如,我在我的分析中运行了一些集群强大的Tobit模型,而且这个软件包也具有内置的功能。更不用说语法很多比我见过的所有其他解决方案更清洁(我们谈论的是干净的Stata级别)。
所以对于你的玩具示例,我会跑:
library(Zelig)
logit<-zelig(Y~X1+X2+X3,data=data,model="logit",robust=T,cluster="Z")
Etvoilà!
答案 2 :(得分:2)
R程序包glm.cluster
中有一个命令miceadds
,似乎与Stata使用选项vce(cluster)
所做的逻辑回归结果相同。请参阅文档here。
在此页面上的示例之一中,命令
mod2 <- miceadds::glm.cluster(data=dat, formula=highmath ~ hisei + female,
cluster="idschool", family="binomial")
summary(mod2)
给出与Stata命令相同的可靠标准错误
logit highmath hisei female, vce(cluster idschool)
例如变量hisei
的标准错误为0.004038。
答案 3 :(得分:0)
另一种替代方法是如下使用sandwich
和lmtest
包。假设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"))
会做。