我已经建立了一个模型,研究了许多变量以及对妊娠结果的影响。结果是一个分组的二进制。一群动物将有34个怀孕和3个空,下一个将有20个怀孕和4个空以此类推。
我已经使用glmer
函数对此数据进行了建模,其中y是妊娠结果(怀孕或空)。
mclus5 <- glmer(y~adg + breed + bw_start + year + (1|farm),
data=dat, family=binomial)
我得到了所有通常的输出和系数等,但为了解释,我想将其转换为每个系数的赔率比和置信区间。
在过去的逻辑回归模型中,我使用了以下代码
round(exp(cbind(OR=coef(mclus5),confint(mclus5))),3)
这将很好地提供我想要的东西,但它似乎不适用于我运行的模型。
有没有人知道我可以通过R得到模型的输出结果的方法?
发布于 2014-10-17 02:48:08
唯一真正的区别是,您必须使用fixef()
而不是coef()
来提取固定效果系数(coef()
将为您提供每组的估计系数)。
我将用lme4
包中的一个内置示例进行说明。
library("lme4")
gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
data = cbpp, family = binomial)
固定效应系数和置信区间,对数赔率标度:
cc <- confint(gm1,parm="beta_") ## slow (~ 11 seconds)
ctab <- cbind(est=fixef(gm1),cc)
(如果您想要更快但不太准确的Wald置信区间,可以改用confint(gm1,parm="beta_",method="Wald")
;这与@Gorka的答案相同,但稍微方便一些。)
取指数以获得优势比:
rtab <- exp(ctab)
print(rtab,digits=3)
## est 2.5 % 97.5 %
## (Intercept) 0.247 0.149 0.388
## period2 0.371 0.199 0.665
## period3 0.324 0.165 0.600
## period4 0.206 0.082 0.449
更简单/更通用的解决方案:
library(broom.mixed)
tidy(gm1,conf.int=TRUE,exponentiate=TRUE,effects="fixed")
对于Wald间隔,或为配置文件置信度间隔添加conf.method="profile"
。
发布于 2015-06-24 18:52:12
我相信还有另一种更快的方法(如果你可以接受一个不太准确的结果)。
来自:http://www.ats.ucla.edu/stat/r/dae/melogit.htm
首先,我们得到估计的置信区间。
se <- sqrt(diag(vcov(mclus5)))
# table of estimates with 95% CI
tab <- cbind(Est = fixef(mclus5), LL = fixef(mclus5) - 1.96 * se, UL = fixef(mclus5) + 1.96 * se)
然后在95%可信区间下的优势比
print(exp(tab), digits=3)
发布于 2016-06-15 10:37:50
我认为另一个选择就是使用emmeans
包:
library(emmeans)
data.frame(confint(pairs(emmeans(fit, ~ factor_name,type="response"))))
https://stackoverflow.com/questions/26417005
复制