Mengapa nilai-p saya berbeda antara output regresi logistik, uji chi-squared, dan interval kepercayaan untuk OR?

37

Saya telah membangun regresi logistik di mana variabel hasil sedang disembuhkan setelah menerima pengobatan ( Curevs No Cure). Semua pasien dalam penelitian ini menerima perawatan. Saya tertarik melihat apakah memiliki diabetes terkait dengan hasil ini.

Dalam R, output regresi logistik saya terlihat sebagai berikut:

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

Namun, interval kepercayaan untuk rasio odds termasuk 1 :

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

Ketika saya melakukan tes chi-squared pada data ini saya mendapatkan yang berikut:

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

Jika Anda ingin menghitungnya sendiri, distribusi diabetes pada kelompok yang sembuh dan tidak sembuh adalah sebagai berikut:

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

Pertanyaan saya adalah: Mengapa nilai-p dan interval kepercayaan termasuk 1 tidak sesuai?

SniperBro2000
sumber
Bagaimana interval kepercayaan untuk diabetes dihitung? Jika Anda menggunakan estimasi parameter dan kesalahan standar untuk membentuk Wald CI Anda mendapatkan exp (-. 5597 + 1.96 * .2813) = .99168 sebagai titik akhir atas.
hard2fathom
@ hard2fathom, kemungkinan besar OP digunakan confint(). Yaitu, kemungkinan itu diprofilkan. Dengan begitu Anda mendapatkan CI yang analog dengan LRT. Perhitungan Anda benar, tetapi sebagai gantinya Wald CIs. Ada lebih banyak informasi dalam jawaban saya di bawah ini.
gung - Reinstate Monica
Saya membatalkannya setelah saya membacanya dengan lebih cermat. Masuk akal.
hard2fathom

Jawaban:

64

Dengan model linear umum, ada tiga jenis tes statistik yang dapat dijalankan. Ini adalah: tes Wald, tes rasio kemungkinan, dan tes skor. Situs bantuan statistik UCLA yang sangat baik membahasnya di sini . Gambar berikut (disalin dari situs mereka) membantu menggambarkannya:

masukkan deskripsi gambar di sini

  1. zNNN
  2. Tes rasio kemungkinan melihat rasio kemungkinan (atau perbedaan dalam kemungkinan log) pada maksimum dan pada nol. Ini sering dianggap tes terbaik.
  3. The tes skor didasarkan pada kemiringan kemungkinan pada nilai nol. Ini biasanya kurang kuat, tetapi ada kalanya kemungkinan penuh tidak dapat dihitung dan jadi ini adalah opsi mundur yang bagus.

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

Nhalhalα=0,050,05

Di bawah ini saya profil koefisien pada skala prediktor linier dan menjalankan uji rasio kemungkinan secara eksplisit (via anova.glm()). Saya mendapatkan hasil yang sama seperti Anda:

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

Seperti @JWilliman tunjukkan dalam komentar (sekarang dihapus), dalam R, Anda juga bisa mendapatkan nilai p berbasis skor menggunakan anova.glm(model, test="Rao"). Pada contoh di bawah, catatan bahwa p-value adalah tidak persis sama seperti pada uji chi-squared di atas, karena secara default, R's chisq.test()berlaku koreksi kontinuitas. Jika kita mengubah pengaturan itu, nilai-p cocok dengan:

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
gung - Reinstate Monica
sumber
12
+1 Ini adalah analisis yang sangat informatif, menangani perilaku yang agak misterius dengan jelas dan otoritatif serta memberikan panduan yang bermanfaat.
whuber
Jawaban yang bagus, meskipun saya tidak mengerti apa yang Anda maksud dengan "Saya akan mengatakan bahwa data Anda tidak cukup 'signifikan' dengan kriteria konvensional".
mark999
@ mark999, tes paling andal di sini (LRT & chi-squared) keduanya sedikit lebih dari 0,05.
gung - Reinstate Monica