一个新手问题:有人知道如何在R中使用聚类标准误来运行逻辑回归吗? 在Stata中,只需运行
logit Y X1 X2 X3, vce(cluster Z)
即可完成,但不幸的是,我还没有弄清楚如何在R中进行相同的分析。 预先感谢!logit Y X1 X2 X3, vce(cluster Z)
即可完成,但不幸的是,我还没有弄清楚如何在R中进行相同的分析。 预先感谢!您可以考虑使用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个节点的受限立方样条。
rcs(bmi,3)
。 - MERose另一种选择是使用 sandwich
和 lmtest
包,具体操作如下。假设你的数据集 dat
中有一个名为 z
的列,其中包含聚类指标,则:
# 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"))
miceadds
中的函数实际上是指sandwich包 :) - Poza我已经苦思冥想了两天,幸运的是我找到了一个似乎注定会取得巨大成功的新软件包。例如,在我的分析中我还运行了一些集群稳健Tobit模型,而这个软件包也内置了这种功能。更不用说其语法要比我见过的所有其他解决方案(我们在谈论接近于Stata的清洁程度)的语法都 更加清晰易懂。
因此,对于您的样例,我会运行:
library(Zelig)
logit<-zelig(Y~X1+X2+X3,data=data,model="logit",robust=T,cluster="Z")
好了,完成了!
Zelig
(在CRAN上)中无法使用。我刚刚运行了几个模型,有些带有cluster
参数,有些没有,但标准误差完全相同。我相信自从4.0版本以来,也就是我上次使用该软件包以来一直都是这样。 - danilofreireglm.control(cluster = "group")
出现错误:unused argument (cluster = "group")
。 - MERoseglm.cluster
的命令,似乎可以给出与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。
sandwich
包中的vcovHC()
函数可能也很有用(不确定是否适用于逻辑回归估计)。 - Ben Bolker