Logistische Regression Werner Brannath VO Biostatistik im WS 2006/2007
Inhalt Logistische Regression Beispiel 1: Herzerkrankungsdaten aus Framingham Log Odds Modell Beispiel 1: Einfluss von Blutdruck Maximum Likelihood Schätzer Wald Tests für Regressionskoeffizienten Analysis of Deviance Beispiel 1: Einfluss von Blutdruck und Cholesterin Beispiel 2: Leukemie-Daten Zusammenfassung Fall-Kontroll-Studien
Beispiel 1: Herzerkrankungsdaten aus Framingham Stichprobe: 1329 männliche Bewohner aus Framingham, Massachusetts im Alter von 40-59 Jahren Erhoben wurden Cholesterin und Blutdruckwerte (Kovariablen), und Herzkrankheiten ja/nein (dichotome Zielvariable).
Beispiel 1: Herzerkrankungsdaten aus Framingham Anteil der Männer mit Herzkrankheiten für verschiedene Blutdruck- und Cholsterinwerte. Cholesterin (mg/100ml) 200 210 220 245 260 Blutdruck < 200 209 219 244 259 284 > 284 < 117 2/53 0/21 0/15 0/20 0/14 1/22 0/11 117 126 0/66 2/27 1/25 8/69 0/24 5/22 1/19 127 136 2/59 0/34 2/21 2/83 0/33 2/26 4/28 137 146 1/65 0/19 0/26 6/81 3/23 2/34 4/23 147 156 2/37 0/16 0/6 3/29 2/19 4/16 1/16 157 166 1/13 0/10 0/11 1/15 0/11 2/13 4/12 167 186 3/21 0/5 0/11 2/27 2/5 6/16 3/14 > 186 1/5 0/1 3/6 1/10 1/7 1/7 1/7 Z.B.: 2 von 53 Männer mit Blutdruck < 117 und Cholesterinwert < 200 hatten Herzkrankheiten.
Beispiel 1: Fragestellungen Hat Cholesterin einen Einfluss auf die Wahrscheinlichkeit für Herzerkrankungen? Hat der Blutdruck einen Einfluss auf die Wahrscheinlichkeit für Herzerkrankungen? Gibt es Trends, d.h. wächst die Wahrscheinlichkeit für eine Herzerkrankung mit wachsendem Blutdruck bzw. wachsendem Cholesterin? Wie ist der gemeinsame Einfluß von Cholesterin- und Blutdruck?
Logistische Regression Logistische Regression modelliert die Abhängigkeit der Wahrscheinlichkeit π eines bestimmten Ereignisses von den Kovariablen. In Beispiel 1: Abhängigkeit der Wahrscheinlichkeit π für eine Herzerkrankung von Blutdruck und Cholesterinwert.
Logistische Transformation Wahrscheinlichkeit π immer zwischen 0 und 1. π kann nicht direkt mit linearen Funktionen (z.b. einer Geraden) modelliert werden. Dewegen wird π zu einem Parameter transformiert, der zwischen und + liegt. Meißt verwendet man die logistische Transformation: π η = logit(π) = log( 1 π ) η = logit(π) wird manchmal als Log Odds bezeichnet.
Umkehrung der logistischen Transformation Aus der Logg Odds η kann man die Wahrscheinlichkeit π leicht zurückrechnen: π = 1/{1 + exp( η)} eta = logit(pi)= pi/(1 pi) pi = 1/(1+exp( eta)) eta 6 4 2 0 2 4 6 0.0 0.2 0.4 0.6 0.8 1.0 pi pi 0.0 0.2 0.4 0.6 0.8 1.0 6 4 2 0 2 4 6 eta
Logistische Regression Lineares logistisches Regressionsmodell X 1,..., X p Kovariablen Wahrscheinlichkeit für das betrachtete Ereignis: η = log{π/(1 π)} = β 0 + β 1 X 1 + + β p X p β 0, β 1,..., β p sind die Regressionskoeffizienten. Schätzung der Regressionsparamter Man schätzt β i durch Maximieren der Likelihood sogn. Maximum-Likelihood-Schätzer ˆβ i
Beispiel 1: Herzerkrankungsdaten aus Framingham - Einfluss von Blutdruck Blutdruck- Klassen- Herzerkrank- Klasse mitte X 1 ungsrate Prozent < 117 111.5 3/156 1.9 117 126 121.5 17/252 6.7 127 136 131.5 12/284 4.2 137 146 141.5 16/271 5.9 147 156 151.5 12/139 8.6 157 166 161.5 8/85 9.4 167 186 176.5 16/99 16.2 > 186 191.5 8/43 18.6
Beispiel 1: Herzerkrankungsdaten aus Framingham - Einfluss von Blutdruck > heart.glm<-glm(cbind(hdis,total-hdis)~x1, >+ family=binomial,data=short1) > summary(heart.glm) Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -6.08203 0.72432-8.40 <2e-16 x1 0.02434 0.00484 5.03 5e-07 Interpretation: Die Log Odds η und die Wahrscheinlichkeit π für eine Herzerkrankung erhöhen sich mit steigendem Blutdruck. Die Log Odds is um 0.024 (0.24) größer, wenn der Blutdruck um eine
Beobachtet und geschätzte Log Odds Blutdruck- Herzerkrank- Beobachtete Geschätzte Klasse ungsrate Log Odds Log Odds (saturiertes Modell) (lineares Modell) < 117 0.01923-3.932-3.368 117 126 0.06746-2.626-3.125 127 136 0.04225-3.121-2.882 137 146 0.05904-2.769-2.638 147 156 0.08633-2.359-2.395 157 166 0.09412-2.264-2.151 167 186 0.16162-1.646-1.786 > 186 0.18605-1.476-1.421
Beobachtet und geschätzte Herzerkrankungsraten proportion 0.05 0.10 0.15 beobachtet geschätzt 120 140 160 180 200 blood pressure
Maximum Likelihood Schätzer ˆβ 0, ˆβ 1,..., ˆβ p m i Zahl der Beobachtungen in Gruppe i = 1,..., n y i Zahl der Ereignisse (z.b. Herzerkrankungen) in Gruppe i Die Likelihood ist die Wahrscheinlichkeit unsere Daten zu beobachten: ( ) L(β 0, β 1,..., β p Daten) = Π n mi i=1 π y i i (1 π i ) 1 y i π i = 1/{1 + exp( β 0 β 1 x 1i β p x pi )} y i Maximieren von L(β 0, β 1,..., β p Daten) ˆβ 0, ˆβ 1,..., ˆβ p
Wald Test für H 0 : β i = 0 Beispiel ˆβ 1 SE ˆβ1 z 1 p-wert Estimate Std.Error z value Pr(> z ) x1 0.02434 0.00484 5.03 5e-07 Falls β i = 0, dann gilt (für hinreichend große Stichproben) z i = ˆβ i /SE ˆβ i N(0, 1) approximativ approximativer p-wert = 2 {1 Φ( z i )} [Φ(z) Verteilungsfunktion der Standardnormalverteilung]
Analysis of Deviance Analysis of Deviance Table > anova(heart.glm,test= Chisq ) Analysis of Deviance Table Model: binomial, link: logit Response: cbind(hdis, total - hdis) Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev P(> Chi ) NULL 7 30.02 x1 1 24.11 6 5.91 9e-07
Null- und Residual-Deviance Log Likelihood = Logarithmus der Likelihood Residual-Deviance (Deviance): 2 Differenz der Log Likelihood des saturierten Modells zur Log Likelihood des linearen Modells. (Analog zu SS res bei normalverteilten Daten) Null-Deviance: 2 Differenz der Log Likelihood des saturierten Modells zur Log Likelihood des Null-Modells (konstantes π). (Analog zu SS total bei normalverteilten Daten)
Deviance Residual Deviance Resid.: Null-Deviance Residual-Deviance (Analog zu SS reg bei normalverteilten Daten) Deviance Resid. ist approximativ χ 2 -verteilt mit df = p Freiheitsgraden. Beispiel Df Deviance Resid. Df Resid. Dev P(> Chi ) NULL 7 30.02 x1 1 24.11 6 5.91 9e-07
Beispiel 1: Herzerkrankungsdaten - Einfluss von Cholesterin Cholesterin- Klassen- Herzerkrank- Klasse mitte X 2 ungsrate Prozent < 200 195.5 12/319 3.8 200 209 204.5 2/133 1.5 210 219 214.5 6/121 5.0 220 244 232.0 23/334 6.9 245 259 252.0 8/136 5.9 260 284 272.0 23/156 14.7 > 284 297.0 18/130 13.8
Beispiel 1: Herzerkrankungsdaten - Einfluss von Blutdruck und Cholesterin > heart.glm2<-glm(cbind(hdis, total-hdis)~x1+x2, >+ family=binomial,data=heart) > summary(heart.glm2) Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -9.34682 1.03189-9.06 < 2e-16 *** x1 0.02165 0.00493 4.39 1.1e-05 *** x2 0.01521 0.00320 4.75 2.1e-06 *** -- Signif. codes: 0 *** 0.001 ** 0.01 * (Dispersion parameter for binomial family taken to be 1) Null deviance: 121.160 on 55 degrees of freedom Residual deviance: 74.544 on 53 degrees of freedom Number of Fisher Scoring iterations: 5
Beispiel 1: Herzerkrankungsdaten - Einfluss von Blutdruck und Cholesterin > anova(heart.glm2,test= Chisq ) Analysis of Deviance Table Model: binomial, link: logit Response: cbind(hdis, total - hdis) Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev P(> Chi ) NULL 55 121.2 x1 1 24.1 54 97.0 9.1e-07 x2 1 22.5 53 74.5 2.1e-06
Beispiel 2: Leukemie-Daten 33 Patienten mit Leukemie Variablen: time wbc ag Überleben in Wochen. Zahl der weißen Blutkörperchen Morphologische Charakteristika der weißen Blutkörperchen ja/nein Einfluss der Variablen wbc und ag auf Überleben; unterscheiden nur ob time 24 oder time< 24
Beispiel 2: Logistische Regression > nleuk.lr<-glm(time>=24~ag*i(wbc/1000), >+ family=binomial,data=leuk) > summary(nleuk.lr) Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -1.7672 0.8724-2.03 0.0428 agpresent 3.2837 1.1595 2.83 0.0046 I(wbc/1000) 0.0199 0.0169 1.17 0.2406 agpresent:i(wbc/1000) -0.0493 0.0241-2.05 0.0405 (Dispersion parameter for binomial family taken to be 1) Null deviance: 45.475 on 32 degrees of freedom Residual deviance: 34.911 on 29 degrees of freedom Number of Fisher Scoring iterations: 4
Beispiel 2: Vohersagen Probability of surviving at least 24 weeks 0.0 0.2 0.4 0.6 0.8 1.0 absent present 0 e+00 2 e+04 4 e+04 6 e+04 8 e+04 1 e+05 White blood count
Beispiel 2: Konfidenzintervalle > options(width=68,digits=4) > library(boot) > confint(nleuk.lr) Waiting for profiling to be done... 2.5 % 97.5 % (Intercept) -3.81092-0.240776 agpresent 1.18655 5.828493 I(wbc/1000) -0.01381 0.056866 agpresent:i(wbc/1000) -0.10272-0.004266 > exp(confint(nleuk.lr)) Waiting for profiling to be done... 2.5 % 97.5 % (Intercept) 0.02213 0.7860 agpresent 3.27575 339.8460 I(wbc/1000) 0.98629 1.0585 agpresent:i(wbc/1000) 0.90238 0.9957
Zusammenfassung Die logistische Regression wird angewendet, wenn die Zielvariable entweder ein Anteil oder Wahrscheinlichkeit ist z.b. Anteil Patienten mit neuen Infektionen auf KH-Stationen dichotom ist, d.h. (nur) zwei Werte annehmen kann z.b.: Erkrankt ja/nein; Geheilt ja/nein etc. Kovariablen können belieber Natur sein (metrische, nominal oder ordinal).
Beispiel 3: BCG-Impfung und Lepra 260 Fälle von Lepra einer prospektiven Studie. 80622 Kontrollen, d.h. Personen ohne Lepra (gleiche Region, gleicher Zeitraum wie bei Fällen) BCG-Impfung ja/nein (Nachweisbar durch Impfnarbe) Alter von 0 bis 34 Jahre (in beiden Gruppen) Fragestellung: Wirkt die BCG-Impfung auch gegen Lepra? Falls ja, dann wird bei Kontrollen die Impfungsnarbe im Mittel häufiger (also wahrscheinlicher) als bei Fällen zu finden sein.
Beispiel 3: BCG-Impfung und Lepra Fall-Kontrol-Daten Fälle Gesamtzahl Narbe (ja=1,nein=0) Altersklasse 1 7594 0 0-4 1 11720 1 0-4 11 7154 0 5-9 14 10198 1 5-9 28 5639 0 10-14 22 7583 1 10-14 16 2224 0 15-19 28 8145 1 15-19 20 2458 0 20-24 19 5607 1 20-24 36 4392 0 25-29 11 1636 1 25-29 47 5292 0 30-34 6 1240 1 30-34
Fall-Kontroll-Studien Problem bei Fall-Kontroll-Studien ist, dass die Erkrankungswahrscheinlichkeit (Inzidenz) der Stichprobe nicht repräsentativ für die Grundgesamtheit ist; daher kann die Inzidenz nicht geschätzt werden. Man kann jedoch die sogn. Odds Ratio schätzen: Odds Ratio = = Odds mit N Odds ohne N = P(F N) / P(F kn) P(K N) P(K kn) = P(F N) P(K kn) P(K N) P(F kn) = P(N F) / P(N K ) P(kN F) P(kN K ) F = Fall, K = Kontrolle, N = Narbe, kn = keine Narbe
Beispiel 3: Logistische Regression > leprosy.glm<-glm(cbind(cases,total-cases)~age+scar, >+ family=binomial(link=logit),data=leprosy) > anova(leprosy.glm, test= Chisq ) Analysis of Deviance Table Df Deviance Resid. Df Resid. Dev P(> Chi ) NULL 13 219.6 age 6 200.7 7 18.9 1.4e-40 scar 1 15.3 6 3.6 9.2e-05 > cbind(estimate=exp(summary(leprosy.glm)$coefficients[,1]), >+ exp(confint(leprosy.glm))) odds ratio 2.5 % 97.5 % (Intercept) 0.008894 0.006690 0.01155 age0-4 0.015644 0.002554 0.05048 age5-9 0.215649 0.130707 0.34646 age10-14 0.562971 0.377562 0.83789 age15-19 0.716404 0.464414 1.09945 age20-24 0.772995 0.498466 1.18835 age25-29 0.997995 0.670679 1.48049 scar 0.578646 0.438226 0.76175