web-dev-qa-db-ja.com

glmer出力からのオッズ比と信頼区間

私は、いくつかの変数と妊娠の結果に与える影響を調べるモデルを作成しました。結果はグループ化されたバイナリです。動物の群れは妊娠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を介してモデルのこの出力を取得する方法を知っている人はいますか?

10
EmmaC

唯一の本当の違いは、固定効果係数を抽出するために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"_を追加します。

14
Ben Bolker

別のはるかに高速な方法があると思います(結果の精度が低くても問題がない場合)。

差出人: 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%CIのオッズ比

print(exp(tab), digits=3)
4
Gorka

私が信じている他のオプションは、パッケージemmeansを使用することです:

library(emmeans)
data.frame(confint(pairs(emmeans(fit, ~ factor_name,type="response"))))
3
Tom Wenseleers