Warum unterscheiden sich meine p-Werte zwischen der logistischen Regressionsausgabe, dem Chi-Quadrat-Test und dem Konfidenzintervall für den OP?

37

Ich habe eine logistische Regression aufgebaut, bei der die Ergebnisvariable nach der Behandlung geheilt wird ( Curevs. No Cure). Alle Patienten in dieser Studie erhielten eine Behandlung. Ich bin daran interessiert zu sehen, ob Diabetes mit diesem Ergebnis zusammenhängt.

In R sieht meine logistische Regressionsausgabe folgendermaßen aus:

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

Das Konfidenzintervall für das Odds Ratio umfasst jedoch 1 :

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

Wenn ich mit diesen Daten einen Chi-Quadrat-Test durchführe, erhalte ich Folgendes:

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

Wenn Sie es selbst berechnen möchten, ist die Verteilung von Diabetes in die geheilten und ungehärteten Gruppen wie folgt:

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

Meine Frage ist: Warum stimmen die p-Werte und das Konfidenzintervall einschließlich 1 nicht überein?

SniperBro2000
quelle
Wie wurde das Konfidenzintervall für Diabetes berechnet? Wenn Sie die Parameterschätzung und den Standardfehler verwenden, um ein Wald-CI zu bilden, erhalten Sie exp (-. 5597 + 1.96 * .2813) = .99168 als oberen Endpunkt.
hard2fathom
@ hard2fathom, höchstwahrscheinlich das verwendete OP confint(). Dh die Wahrscheinlichkeit wurde profiliert. Auf diese Weise erhalten Sie CIs, die dem LRT entsprechen. Ihre Berechnung ist richtig, stellen jedoch stattdessen Wald-CIs dar. In meiner Antwort unten finden Sie weitere Informationen.
gung - Reinstate Monica
Ich habe es hochgestuft, nachdem ich es genauer gelesen habe. Macht Sinn.
Hard2fathom

Antworten:

64

Bei verallgemeinerten linearen Modellen gibt es drei verschiedene Arten statistischer Tests, die ausgeführt werden können. Dies sind: Wald-Tests, Likelihood-Ratio-Tests und Score-Tests. Auf der hervorragenden Hilfeseite für UCLA-Statistiken werden sie hier erläutert . Die folgende Abbildung (von der Site kopiert) dient zur Veranschaulichung:

Bildbeschreibung hier eingeben

  1. zNNN
  2. Bei Likelihood-Ratio-Tests wird das Verhältnis der Likelihoods (oder der Differenz der Log-Likelihoods) zum Maximum und zum Nullpunkt untersucht. Dies wird oft als der beste Test angesehen.
  3. Der Bewertungstest basiert auf der Steigung der Wahrscheinlichkeit zum Nullwert. Dies ist normalerweise weniger leistungsfähig, aber es gibt Zeiten, in denen die volle Wahrscheinlichkeit nicht berechnet werden kann, und daher ist dies eine gute Fallback-Option.

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

Nppα=.05.05

Unten profiliere ich die Koeffizienten auf der Skala des linearen Prädiktors und führe den Likelihood-Ratio-Test explizit durch (via anova.glm()). Ich erhalte die gleichen Ergebnisse wie Sie:

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

Wie @JWilliman in einem Kommentar (der jetzt gelöscht wurde) in hervorhob R, können Sie mit auch einen auf der Punktzahl basierenden p-Wert erhalten anova.glm(model, test="Rao"). Im Beispiel unten, zur Kenntnis , dass der p-Wert ist nicht ganz dasselbe wie in dem Chi-Quadrat - Test oben, weil standardmäßig Rist chisq.test()eine Kontinuitätskorrektur gilt. Wenn wir diese Einstellung ändern, stimmen die p-Werte überein:

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 - Wiedereinsetzung von Monica
quelle
12
+1 Dies ist eine sehr informative Analyse, die sich klar und verbindlich mit etwas mysteriösem Verhalten befasst und nützliche Hinweise gibt.
Whuber
Gute Antwort, obwohl ich nicht verstehe, was Sie unter "Ich würde sagen, dass Ihre Daten nach herkömmlichen Kriterien nicht ganz" signifikant "sind".
mark999
@ mark999, die zuverlässigsten Tests hier (LRT & Chi-Quadrat) liegen beide etwas über 0,05.
gung - Wiedereinsetzung von Monica