ロジスティック回帰出力、カイ2乗検定、ORの信頼区間でp値が異なるのはなぜですか?


37

治療を受けた後、結果変数が治癒するロジスティック回帰を構築しました(Curevs. No Cure)。この研究のすべての患者は治療を受けました。糖尿病にかかっていることがこの結果に関連しているかどうかを確認したいです。

Rでは、ロジスティック回帰の出力は次のようになります。

Call:
glm(formula = Cure ~ Diabetes, family = binomial(link = "logit"), data = All_patients)
...
Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   1.2735     0.1306   9.749   <2e-16 ***
Diabetes     -0.5597     0.2813  -1.990   0.0466 *  
...
    Null deviance: 456.55  on 415  degrees of freedom
Residual deviance: 452.75  on 414  degrees of freedom
  (2 observations deleted due to missingness)
AIC: 456.75

ただし、オッズ比の信頼区間には1が含まれます

                   OR     2.5 %   97.5 %
(Intercept) 3.5733333 2.7822031 4.646366
Diabetes    0.5713619 0.3316513 1.003167

これらのデータに対してカイ2乗検定を行うと、次の結果が得られます。

data:  check
X-squared = 3.4397, df = 1, p-value = 0.06365

自分で計算したい場合、治癒グループと未治癒グループの糖尿病の分布は次のとおりです。

Diabetic cure rate:      49 /  73 (67%)
Non-diabetic cure rate: 268 / 343 (78%)

私の質問は、なぜp値と1を含む信頼区間が一致しないのですか?


糖尿病の信頼区間はどのように計算されましたか?パラメーター推定値と標準誤差を使用してWald CIを形成すると、上限値としてexp(-。5597 + 1.96 * .2813)= .99168が得られます。
-hard2fathom

@ hard2fathom、おそらくOPが使用されconfint()ます。すなわち、可能性がプロファイルされました。これにより、LRTに類似したCIを取得できます。あなたの計算は正しいですが、代わりにWald CIを構成します。以下の私の答えに詳細があります。
GUNG -復活モニカ

もっと注意深く読んだ後、私はそれを支持しました。理にかなっています。
-hard2fathom

回答:


64

一般化線形モデルでは、実行できる統計テストには3つの異なるタイプがあります。これらは、Waldテスト、尤度比テスト、およびスコアテストです。優れたUCLA統計ヘルプサイトでは、ここでそれらについて説明しています。次の図(サイトからコピー)は、それらを説明するのに役立ちます。

ここに画像の説明を入力してください

  1. zNNN
  2. 尤度比検定では、尤度(または対数尤度の差)の比率を最大値とヌルで調べます。これは多くの場合、最良のテストと見なされます。
  3. スコア試験が NULL値で尤度の傾きに基づいています。通常、これはそれほど強力ではありませんが、完全な尤度を計算できない場合があるため、これは素晴らしいフォールバックオプションです。

summary.glm()confint()profile()1.96χ2

Nppα=.05.05

以下では、線形予測子のスケールで係数をプロファイルし、尤度比テストを明示的に実行します(経由anova.glm())。あなたと同じ結果が得られます:

library(MASS)
x = matrix(c(343-268,268,73-49,49), nrow=2, byrow=T);  x
#      [,1] [,2]
# [1,]   75  268
# [2,]   24   49
D = factor(c("N","Diabetes"), levels=c("N","Diabetes"))
m = glm(x~D, family=binomial)
summary(m)
# ...
# Coefficients:
#             Estimate Std. Error z value Pr(>|z|)    
# (Intercept)  -1.2735     0.1306  -9.749   <2e-16 ***
# DDiabetes     0.5597     0.2813   1.990   0.0466 *  
# ...
confint(m)
# Waiting for profiling to be done...
#                    2.5 %    97.5 %
# (Intercept) -1.536085360 -1.023243
# DDiabetes   -0.003161693  1.103671
anova(m, test="LRT")
# ...
#      Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
# NULL                     1     3.7997           
# D     1   3.7997         0     0.0000  0.05126 .
chisq.test(x)
#         Pearson's Chi-squared test with Yates' continuity correction
# 
# X-squared = 3.4397, df = 1, p-value = 0.06365

@JWillimanがコメント(現在は削除済み)で指摘したように、ではR、を使用してスコアベースのp値を取得することもできますanova.glm(model, test="Rao")。デフォルトでは、ので、p値は、上記のカイ二乗検定と全く同じではないことに注意してください、以下の例ではR「sはchisq.test()連続性補正を適用します。その設定を変更すると、p値は一致します。

anova(m, test="Rao")
# ...
#      Df Deviance Resid. Df Resid. Dev   Rao Pr(>Chi)  
# NULL                     1     3.7997                 
# D     1   3.7997         0     0.0000 4.024  0.04486 *
chisq.test(x, correct=FALSE)
#   Pearson's Chi-squared test
# 
# data:  x
# X-squared = 4.024, df = 1, p-value = 0.04486

12
+1これは非常に有益な分析であり、やや不可解な行動を明確かつ権威を持って扱い、有用なガイダンスを提供します。
whuber

いい答えが出ましたが、「あなたのデータは従来の基準ではまったく「有意」ではないと言うでしょう」とはどういう意味かわかりません。
mark999

@ mark999、ここで最も信頼性の高いテスト(LRTとカイ2乗)は両方とも0.05をわずかに超えています。
GUNG -復活モニカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.