使用广义估计方程(GEE)计算系数的置信区间

8

我正在使用geepack运行广义估计方程来运行线性回归模型。在这里,confint(fit)命令似乎无法正常工作。例如:

f2 <- geeglm(FEV1 ~ Age, data = Hospdata, family=gaussian, id=HHID)  
summary(f2)
confint(f2)

在运行confint(f2)时,我得到了以下错误信息:

> confint(f2)
Waiting for profiling to be done...
Error in `[.data.frame`(summ$coefficients, , "Std. Error", drop = FALSE) : undefined columns selected

这里有没有找到置信区间的方法?
5个回答

18

像这样的:

library(geepack)
data(dietox)
dietox$Cu     <- as.factor(dietox$Cu)
mf1 <- formula(Weight~Cu*poly(Time,3))
gee1 <- geeglm(mf1, data=dietox, id=Pig,
               family=poisson("identity"),corstr="ar1")
cc <- coef(summary(gee1))
citab <- with(as.data.frame(cc),
     cbind(lwr=Estimate-1.96*Std.err,
           upr=Estimate+1.96*Std.err))
rownames(citab) <- rownames(cc)

为方便起见,您可以编写一个confint方法来封装此操作:

confint.geeglm <- function(object, parm, level = 0.95, ...) {
    cc <- coef(summary(object))
    mult <- qnorm((1+level)/2)
    citab <- with(as.data.frame(cc),
                  cbind(lwr=Estimate-mult*Std.err,
                        upr=Estimate+mult*Std.err))
    rownames(citab) <- rownames(cc)
    citab[parm,]
}

confint(gee1)

谢谢 - 如果我理解正确的话,这取决于估计值服从高斯(正态)分布的假设。请问您能否确认这确实是这种情况,并可能提供参考资料?这将帮助我在研究分析中实际使用它。 - Martin
1
是的,这是一个 Wald 置信区间(假设估计值的抽样分布为正态分布)。 - Ben Bolker
太棒了,感谢您的快速回答并指导我使用Wald置信区间。 - Martin

2

仅需使用 broom:tidy(f2, conf.int = TRUE) 即可。


0
你需要安装和加载geeasy软件包。

这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要提问者澄清的答案。- 来自评论 - undefined
你的回答可以通过提供更多的支持性信息来改进。请编辑以添加进一步的细节,比如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

0

confint 来自于 stats 包。 geeglm 来自于 geepack 包。

您需要确定置信区间存储在模型输出的哪里。

使用 str(f2) 或从 summary(f2) 推导出它们。

此外,还可以查看 f2$ 并通过模型对象的自动完成进行制表。

另外,还要查看文档 - link。由于我运行的示例模型没有生成 CIs,因此您可能需要构建自己的 CIs,并从参数标准误差中手动计算。


0

已过去四年,我以同样的原因来到这里。为了其他也来到这里的人的利益,在看到Ben上面的回答后,我意识到confint()函数计算的是剖面似然区间。它不能用于广义估计方程(GEE),因为它不是基于似然。

基本函数confint.default()提供瓦尔德区间,并可以与GEE一起使用。它应该给出与Ben上面的函数相同的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接