ロジスティック回帰の95%信頼区間を手動で計算することと、Rでconfint()関数を使用することに違いがあるのはなぜですか?


34

皆さん、私は説明できない奇妙なことに気づきました、できますか?要約すると、ロジスティック回帰モデルで信頼区間を計算する手動のアプローチとR関数confint()は異なる結果をもたらします。

Hosmer&LemeshowのApplied Logistic Regression(第2版)を行ってきました。第3章には、オッズ比と95%の信頼区間を計算する例があります。Rを使用すると、モデルを簡単に再現できます。

Call:
glm(formula = dataset$CHD ~ as.factor(dataset$dich.age), family = "binomial")

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-1.734  -0.847  -0.847   0.709   1.549  

Coefficients:
                             Estimate Std. Error z value Pr(>|z|)    
(Intercept)                   -0.8408     0.2551  -3.296  0.00098 ***
as.factor(dataset$dich.age)1   2.0935     0.5285   3.961 7.46e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 136.66  on 99  degrees of freedom
Residual deviance: 117.96  on 98  degrees of freedom
AIC: 121.96

Number of Fisher Scoring iterations: 4

ただし、パラメーターの信頼区間を計算すると、テキストで指定されたものとは異なる区間が得られます。

> exp(confint(model))
Waiting for profiling to be done...
                                 2.5 %     97.5 %
(Intercept)                  0.2566283  0.7013384
as.factor(dataset$dich.age)1 3.0293727 24.7013080

Hosmer&Lemeshowは次の式を提案します。

e[β^1±z1α/2×SE^β^1]

また、信頼区間はas.factor(dataset$dich.age)1(2.9、22.9)であると計算されます。

これは、Rで行うのが簡単なようです:

# upper CI for beta
exp(summary(model)$coefficients[2,1]+1.96*summary(model)$coefficients[2,2])
# lower CI for beta
exp(summary(model)$coefficients[2,1]-1.96*summary(model)$coefficients[2,2])

本と同じ答えを与えます。

しかし、なぜconfint()異なる結果をもたらすように思われるのでしょうか?を使用してconfint()いる人々の例を見てきました。


1
Hosmer&Lemeshowの正確な文献参照を追加していただけますか?私はかなり長い間、彼らの複写と本で提案を探していましたが、まだそれを見つけていません。
DavidR 14年

回答:


36

付随するウェブサイトからデータを取得した後、次のようにします。

chdage <- read.table("chdage.dat", header=F, col.names=c("id","age","chd"))
chdage$aged <- ifelse(chdage$age>=55, 1, 0)
mod.lr <- glm(chd ~ aged, data=chdage, family=binomial)
summary(mod.lr)

プロファイル尤度に基づく95%CIは、

require(MASS)
exp(confint(mod.lr))

MASSパッケージが自動的にロードされる場合、多くの場合これがデフォルトです。この場合、私は得る

                2.5 %     97.5 %
(Intercept) 0.2566283  0.7013384
aged        3.0293727 24.7013080

さて、手で計算したような95%Wald CI(漸近正規性に基づく)と比較したい場合は、confint.default()代わりに使用します。これにより

                2.5 %     97.5 %
(Intercept) 0.2616579  0.7111663
aged        2.8795652 22.8614705

Wald CIはほとんどの状況で適していますが、プロファイルの尤度ベースは複雑なサンプリング戦略に役立つ場合があります。:あなたは、彼らがどのように動作するかのアイデアを把握したい場合は、ここでの主な原則の簡単な概要である信頼区間は、獣医疫学でのアプリケーションと、プロファイル尤度法による。Venables and RipleyのMASS本、§8.4、ページ220-221もご覧ください。


25

フォローアップ:プロファイルの信頼区間はより信頼性が高い(尤度の適切なカットオフの選択には漸近(大標本)の仮定が含まれますが、これはWaldの信頼区間の基礎となる2次尤度曲面の仮定よりもはるかに弱い仮定です)。私の知る限り、プロファイル信頼区間でのWald統計の議論はありません。ただし、Wald統計は計算がはるかに速く、多くの状況で「十分」である可能性があります(ただし、時々:Hauck-ドナー効果)。


2
これに感謝し、Hauck-Donner効果を調べてみてください。効果は教科書ではあまり扱いませんが、かなり重要なようです!
アンドリュー

18

confint()のヘルプファイルを調べると、構築されている信頼区間は、Wald信頼区間(HLの式)ではなく、「プロファイル」区間であることがわかります。


5
ああ。それが質問に答えます。しかし、それは次のものにつながります-どれが好ましいですか?
アンドリュー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.