Sehr geehrte Damen und Herren, mir ist etwas Merkwürdiges aufgefallen, das ich Ihnen nicht erklären kann. Zusammenfassend lässt sich sagen, dass der manuelle Ansatz zur Berechnung eines Konfidenzintervalls in einem logistischen Regressionsmodell und die R-Funktion confint()
unterschiedliche Ergebnisse liefern.
Ich habe die angewandte logistische Regression von Hosmer & Lemeshow (2. Auflage) durchlaufen . Im dritten Kapitel finden Sie ein Beispiel für die Berechnung der Odds Ratio und des 95% -Konfidenzintervalls. Mit R kann ich das Modell leicht reproduzieren:
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
Wenn ich jedoch die Konfidenzintervalle der Parameter berechne, erhalte ich ein anderes Intervall als im Text angegeben:
> 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 schlagen folgende Formel vor:
und sie berechnen das Konfidenzintervall für as.factor(dataset$dich.age)1
(2.9, 22.9).
Dies scheint in R unkompliziert zu sein:
# 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])
gibt die gleiche Antwort wie das Buch.
Überlegen Sie jedoch, warum confint()
sich unterschiedliche Ergebnisse ergeben? Ich habe viele Beispiele von Leuten gesehen, die es benutzen confint()
.
quelle
Antworten:
Nachdem ich die Daten von der zugehörigen Website abgerufen habe, gehe ich folgendermaßen vor:
Die 95% CIs basierend auf der Profilwahrscheinlichkeit werden mit erhalten
Dies ist häufig die Standardeinstellung, wenn das
MASS
Paket automatisch geladen wird. In diesem Fall bekomme ichWenn ich nun mit 95% Wald-CIs (basierend auf asymptotischer Normalität) vergleichen möchte, wie Sie sie von Hand berechnet haben, würde ich
confint.default()
stattdessen verwenden. Dies ergibtWald-CIs sind in den meisten Situationen gut, obwohl die Profilwahrscheinlichkeit bei komplexen Stichprobenstrategien hilfreich sein kann. Wenn Sie wissen möchten, wie sie funktionieren, finden Sie hier einen kurzen Überblick über die wichtigsten Prinzipien: Konfidenzintervalle nach der Profilwahrscheinlichkeitsmethode bei Anwendungen in der Veterinärepidemiologie . Sie können sich auch das MASS-Buch von Venables und Ripley (§8.4, S. 220-221) ansehen.
quelle
Follow-up: Profil-Konfidenzintervalle sind zuverlässiger (die Auswahl des geeigneten Grenzwerts für die Wahrscheinlichkeit beinhaltet eine asymptotische Annahme (große Stichprobe), dies ist jedoch eine viel schwächere Annahme als die den Wald-Konfidenzintervallen zugrunde liegende quadratische Wahrscheinlichkeitsoberflächenannahme). Soweit ich weiß, gibt es kein Argument für die Wald-Statistiken über die Profilvertrauensintervalle, außer dass die Wald-Statistiken viel schneller berechnet werden können und unter vielen Umständen "gut genug" sind (aber manchmal weit davon entfernt: Schauen Sie sich die Hauck-Statistiken an. Donner-Effekt).
quelle
Ich glaube, wenn Sie in der Hilfedatei nach confint () suchen, werden Sie feststellen, dass das zu erstellende Konfidenzintervall ein "Profil" -Intervall anstelle eines Wald-Konfidenzintervalls ist (Ihre Formel aus HL).
quelle