Survival Analysis (Modul: Lebensdaueranalyse) ROLAND RAU Universität Rostock, Sommersemester 2015 21. April 2015 c Roland Rau Survival Analysis 1 / 35
Veranstaltung nächste Woche entfällt. Lehrstuhl Demographie bei der PAA Annual Meeting der Population Association of America c Roland Rau Survival Analysis 2 / 35
Veranstaltungshinweis: Donnerstag, 23.04 Im Rahmen des 16. Rostocker Dienstleistungsabends wird Thomas Brandtner Merchandising Leiter Onlineshop/E-Commerce der BVB Merchandising GmbH Dortmund am Donnerstag, 23. April 2015 um 18.00 Uhr c.t. im Hörsaal I des Arno-Esch-Gebäudes, Ulmenstraße 69 (Haus 8) über das Thema E-Commerce bei Borussia Dortmund Herausforderungen und Erfahrungen sprechen. Borussia Dortmund gehört in Deutschland zu den renommiertesten Fußballclubs und zählt spätestens seit dem Champions League-Finale 2013 international wieder zur Elite. Der sportliche Aufschwung lässt folglich auch die Merchandising-Kassen des Vereins klingeln. Dabei gibt es neben dem bekannten schwarzgelben Trikot noch eine Reihe an anderer Produkten, in die der Fan von heute investiert und mit denen er sein Liebe zum Verein zum Ausdruck bringen will. Der Onlinevertrieb der Fanartikel gehört dabei zu den wichtigsten Vertriebskanälen der BVB Merchandising GmbH. Thomas Brandtner, Leiter E-Commerce, bei Borussia Dortmund berichtet in seinem Vortrag über die Herausforderungen und Erfahrungen seiner Tätigkeit beim Spitzenverein aus dem Ruhrpott. Der Unterschied zwischen einem Kunden und einem Fan oder was die Wirtschaft vom Sport in diesem Bereich lernen kann, gehören dabei zu den spannenden Themen dieses Abends. c Roland Rau Survival Analysis 3 / 35
Formelübersicht: X (Prozess-)Zeit bis zu einem definierten Ereignis S(x) = Pr(X > x) x F(x) = Pr(X x) = f (t)dt = 1 S(x) x S(x) = 1 f (t)dt = f (t)dt 0 0 f (x) = ds(x) dx h(x) = f (x) S(x) = ds(x) dx = S(x) x d ln S(x) dx x H(x) = h(t)dt = ln S(x) 0 S(x) = e H(x) = e x h(t)dt 0 c Roland Rau Survival Analysis 4 / 35
Statistische Verteilungen in der Survival-Analyse Exponential-Verteilung Gompertz-Verteilung h(x) = λ h(x) = αe βx S(x) 0.0 0.5 1.0 1.5 2.0 λ1 = 1.0 λ2 = 0.3 λ3 = 1.5 0 5 10 15 20 log h(x) 0.0001 0.001 0.01 0.1 1 0 20 40 60 80 100 α1 = 0.0001 β1 = 0.10 α2 = 0.0010 β1 = 0.10 α1 = 0.0001 β2 = 0.15 α2 = 0.0010 β2 = 0.15 x Dies sind natürlich nur zwei von vielen (!) möglichen Verteilungen (Weibull, log-normal, log-logistic,... )! c Roland Rau Survival Analysis 5 / 35 x
Hausaufgabe Erstellen Sie sich für unser Seminar ein Arbeitsverzeichnis auf Ihrem eigenen Laptop/Rechner oder auf Ihrem Uni-Laufwerk; beispielsweise: C:/Sommer2015/Survival Registrieren Sie sich bei der Human Mortality Database ( HMD, www.mortality.org) Laden Sie sich dort eine 1x1 Sterbetafel für Frauen für ein beliebiges Land herunter. Laden Sie sich von meiner Uni-Homepage die Datei survivalanimation2015.r herunter. Öffnen Sie dieses Skript in R und versuchen Sie es zum Laufen zu bekommen. Beachten Sie dabei, dass Sie das Paket rpanel vermutlich noch installieren müssen (evtl. auch noch weitere Pakete). Zudem sollten Sie nicht vergessen, dass man vermutlich für die Pfadangaben den doppelten Backslash unter Windows benötigt. Also setwd("c:\\sommer2015\\survival") und NICHT: setwd("c:\sommer2015\survival") c Roland Rau Survival Analysis 6 / 35
Hausaufgabe Ab ungefähr dem Alter 30 kann man bei menschlichen Bevölkerungen davon ausgehen, dass die Lebensdauern in etwa der Gompertz-Verteilung folgen. Das Ergebnis einer MLE ergab für die Parameter α und β die Schätzwerte: ˆα = 0.00001 und ˆβ = 0.11. Frage: Bis zu welchem Alter überleben 90% der Bevölkerung? c Roland Rau Survival Analysis 7 / 35
Hausaufgabe Ab ungefähr dem Alter 30 kann man bei menschlichen Bevölkerungen davon ausgehen, dass die Lebensdauern in etwa der Gompertz-Verteilung folgen. Das Ergebnis einer MLE ergab für die Parameter α und β die Schätzwerte: ˆα = 0.00001 und ˆβ = 0.11. Frage: Bis zu welchem Alter überleben 90% der Bevölkerung? x = (1 e S(x) = e α βx) β ln (S(x)) = α (1 e βx) β β ln (S(x)) α = (1 e βx) β ln (S(x)) 1 = e βx α ( ) β ln (S(x)) ln 1 = βx α ( ) ln 1 β ln(s(x)) α = x = β ln (1 ( 1158.966)) 0.11 = ( ln 1 ln 1159.966 0.11 ) 0.11 ln(0.9) 0.00001 0.11 = 7.056146 0.11 = 64.14678 c Roland Rau Survival Analysis 8 / 35
S(x) 0.0 0.2 0.4 0.6 0.8 1.0 0 20 40 60 80 100 120 Alter x c Roland Rau Survival Analysis 9 / 35
Anwendungsbeispiel: Exponentialverteilung Der Wolpertinger altert nicht. Dennoch ist er nicht unsterblich. Häufig kommt der Wolpertinger unter die Räder. Man kann davon ausgehen, dass dieser Unfalltod altersunabhängig ist; man also davon ausgehen kann, dass die Lebenszeit eines Wolpertingers einer Exponential-Verteilung folgt. Eine Gruppe eifriger Wissenschafter hat einer Gruppe von 100 neugeborenen Wolpertingern Mikrochips eingepflanzt, die ein Signal übermitteln, wenn ein Wolpertinger gestorben ist. Am Ende der Studie ergibt sich folgender Datensatz: Bildquelle: Rainer Zenz (Bild ist in der Public Domain ) c Roland Rau Survival Analysis 10 / 35
Anwendungsbeispiel: Exponentialverteilung V1 1 17.512 2 1.727 3 0.046 4 12.199 5 2.710 6 0.630 7 5.769 8 1.418 9 5.866 10 5.323 11 13.161 12 11.173 13 11.611 14 21.367 15 12.255 16 0.222... setwd("c:\\sommer2015\\survival") wolpi <- read.table("wolpertinger2015.txt") wolpi c Roland Rau Survival Analysis 11 / 35
Anwendungsbeispiel: Exponentialverteilung Die Veteilung der Sterbezeiten lässt sich mittels eines Histograms leicht darstellen: daten.aggregiert <- hist(wolpi$v1, breaks=c(seq(0,20, by=1),50), plot=false) plot(x=daten.aggregiert$mids, y=daten.aggregiert$density, type="h") daten.aggregiert$density 0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0 10 20 30 40 daten.aggregiert$mids c Roland Rau Survival Analysis 12 / 35
Anwendungsbeispiel: Exponentialverteilung Doch welcher Parameterwert λ passt am besten zu den beobachteten Daten? Vielleicht: λ = 0.1 oder λ = 0.2 oder λ = 0.5 oder λ = 3 oder???? plot(x=daten.aggregiert$mids, y=daten.aggregiert$density, type="h") lines(x=0:35, y=dexp(0:35, rate=0.1), col="magenta", lty=1, lwd=3) lines(x=0:35, y=dexp(0:35, rate=0.2), col="green", lty=1, lwd=3) lines(x=0:35, y=dexp(0:35, rate=0.5), col="blue", lty=1, lwd=3) lines(x=0:35, y=dexp(0:35, rate=3), col="red", lty=1, lwd=3) daten.aggregiert$density 0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0 10 20 30 40 daten.aggregiert$mids c Roland Rau Survival Analysis 13 / 35
Anwendungsbeispiel: Exponentialverteilung Wie finden wir das λ welches unsere beobachteten Daten am besten beschreibt? Maximum-Likelihood Methode Welches λ hat die größte Likelihood mit unseren gegebenen Daten? L (λ x 1, x 2, x 3,..., x n) =? Unter der Voraussetzung, dass x 1, x 2, x 3,..., x n derselben Verteilung entstammen und die einzelnen Werte (in unserem Fall: Lebensdauern) unabhängig voneinander sind, so gilt: L (λ x 1, x 2, x 3,..., x n) = n f (λ, x i) Der Maximum-Likelihood-Schätzer ist derjenige λ-wert, für den diese Funktion am größten ist. i=1 c Roland Rau Survival Analysis 14 / 35
Anwendungsbeispiel: Exponentialverteilung Da es zu numerischen Problemen kommen kann, nimmt man in aller Regel den (natürlichen) Logarithmus dieser Funktion; damit wird aus dem Produkt eine Summe, hat aber keinen Einfluss auf den Wert, wo die Funktion maximal ist ( f (x 1) > f (x 2) ln f (x 1) > ln f (x 2)). Da wir davon ausgehen, dass unsere Daten aus einer Exponentialverteilung kommen, können wir unsere Likelihood- und dann unsere log-likelihood-funktion relativ einfach aufstellen: L (λ x 1, x 2, x 3,..., x n) = n λe λx i i=1 ln L (λ x 1, x 2, x 3,..., x n) = n ln λ λx i i=1 Fortsetzung in der nächsten Veranstaltung JETZT! c Roland Rau Survival Analysis 15 / 35
Anwendungsbeispiel: Exponentialverteilung I n ln L (λ x 1, x 2, x 3,..., x n) = ln λ λx i In R lässt sich dies ohne größe Schwierigkeiten umsetzen: i=1 setwd("c:\\sommer2015\\") wolpi <- read.table("wolpertinger2015.txt") wolpi30 <- wolpi[1:30,1] # wir beschränken uns auf die ersten 30 # Wolpertinger in diesem Beispiel likelihood.exponential <- function(lambda, lifetimes) { prod(lambda * exp(-lambda * lifetimes)) } moegliche.lambdas <- seq(0, 0.3, length=1000) die.y.werte <- sapply(x=moegliche.lambdas, FUN=likelihood.exponential, lifetimes=wolpi30) plot(x=moegliche.lambdas, y=die.y.werte, type="l", xlab=expression(paste("mögliche ", lambda, " Werte")), ylab=expression(paste("l(", lambda, " ", x[1], x[2], x[...], ")"))) abline(h=max(die.y.werte), col="green") abline(v=moegliche.lambdas[which.max(die.y.werte)], col="green") c Roland Rau Survival Analysis 16 / 35
Anwendungsbeispiel: Exponentialverteilung II text(x=0.17, y=0, labels=sprintf("%.5f",moegliche.lambdas[which.max(die.y.werte)]), pos=4, col="green") log.likelihood.exponential <- function(lambda, lifetimes) { sum(log(lambda) - lambda * lifetimes) } die.log.y.werte <- sapply(x=moegliche.lambdas, FUN=log.likelihood.exponential, lifetimes=wolpi30) plot(x=moegliche.lambdas, y=die.log.y.werte, type="l", xlab=expression(paste("mögliche ", lambda, " Werte")), ylab=expression(paste("log-l(", lambda, " ", x[1], x[2], x[...], ")"))) abline(h=max(die.log.y.werte), col="green") abline(v=moegliche.lambdas[which.max(die.log.y.werte)], col="green") text(x=0.17, y=-220, labels=sprintf("%.5f",moegliche.lambdas[which.max(die.log.y.werte)]), pos=4, col="green") unser.mle <- optimize(log.likelihood.exponential, lifetimes=wolpi[,1], interval=c(0,100), maximum=true) unser.mle daten.aggregiert <- hist(wolpi$v1, breaks=c(seq(0,20, by=1),100), plot=false) c Roland Rau Survival Analysis 17 / 35
Anwendungsbeispiel: Exponentialverteilung III plot(x=daten.aggregiert$mids, y=daten.aggregiert$density, type="h") lines(x=0:35, y=dexp(0:35, rate=0.1), col="magenta", lty=1, lwd=3) lines(x=0:35, y=dexp(0:35, rate=0.2), col="green", lty=1, lwd=3) lines(x=0:35, y=dexp(0:35, rate=0.5), col="blue", lty=1, lwd=3) lines(x=0:35, y=dexp(0:35, rate=3), col="red", lty=1, lwd=3) lines(x=0:35, y=dexp(0:35, rate=unser.mle$maximum), col="orange", lty=1, lwd=5) c Roland Rau Survival Analysis 18 / 35
Anwendungsbeispiel: Exponentialverteilung daten.aggregiert$density 0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0 10 20 30 40 c daten.aggregiert$mids Roland Rau Survival Analysis 19 / 35
interaktives Beispiel: Gompertzverteilung source("animationundfittinggompertzupdate2015.r") part1() part2() c Roland Rau Survival Analysis 20 / 35
Zensierung & Trunkierung: Nicht vollständig beobachtete Prozesszeit Zensierung: In essence, censoring occurs when we have some information about individual survival time, but we don t know the survival time exactly. KLEINBAUM AND KLEIN (2005, S. 5): One peculiar feature, often present in time-to-event data, is known as censoring, which, broadly speaking, occurs when some lifetimes are known to have occurred only within certain intervals. KLEIN AND MOESCHBERGER (2003, S. 55): c Roland Rau Survival Analysis 21 / 35
Rechtszensierung Type-I Censoring: Ereignis wird nur beobachtet, wenn die Prozesszeit kleiner als die Studiendauer ist. Type-II Censoring: Studie wird beendet, wenn eine bestimmte Anzahl (oder ein bestimmter Anteil) der Individuen das Ereignis erfahren hat. In aller Regel trifft man in den Sozialwissenschaften Type-I Censoring an. Beginn der Studie Prozesszeit Ende der Studie c Roland Rau Survival Analysis 22 / 35
Rechtszensierung Type-I Censoring: Ereignis wird nur beobachtet, wenn die Prozesszeit kleiner als die Studiendauer ist. Type-II Censoring: Studie wird beendet, wenn eine bestimmte Anzahl (oder ein bestimmter Anteil) der Individuen das Ereignis erfahren hat. In aller Regel trifft man in den Sozialwissenschaften Type-I Censoring an. Allerdings kann es auch passieren, dass Personen vor Studienende die Studie verlassen (wodurch?). Beginn der Studie Prozesszeit Ende der Studie c Roland Rau Survival Analysis 23 / 35
Rechtszensierung Type-I Censoring: Ereignis wird nur beobachtet, wenn die Prozesszeit kleiner als die Studiendauer ist. Type-II Censoring: Studie wird beendet, wenn eine bestimmte Anzahl (oder ein bestimmter Anteil) der Individuen das Ereignis erfahren hat. In aller Regel trifft man in den Sozialwissenschaften Type-I Censoring an. Allerdings kann es auch passieren, dass Personen vor Studienende die Studie verlassen entweder freiwillig ( kein Interesse an weiterer Teilnahme) aber auch unfreiwillig ( komkurrierende Risiken) Beginn der Studie Prozesszeit Ende der Studie c Roland Rau Survival Analysis 24 / 35
Linkszensierung Auf linkszensierte Daten trifft man seltener als auf rechtszensierte Daten. Wir werden im weiteren Verlauf des Seminars auch nicht mehr darauf Bezug nehmen. Klein and Moeschberger (2003, S. 62) bringen als Beispiel eine Studie zur Frage: In welchem Alter haben Sie zum ersten Mal Marihuana konsumiert? Eine mögliche Antwortkategorie war dabei: Ich habe es schon einmal komsumiert, aber ich weiss nicht mehr wann. Während bei rechtszensierten Daten, die tatsächliche Event-Time größer als eine bestimmte Zeitdauer ist (beispielsweise das Ende der Studie), so ist bei linkszensierten Daten die tatsächliche Zeitdauer kleiner als eine angegebene Zeitdauer (beispielsweise das gegenwärtige Alter). c Roland Rau Survival Analysis 25 / 35
Einfluss von Rechtszensierung auf Schätzung Beobachtet man den Event, so verwenden wir bei der Likelihood-Konstruktion die Dichte. Im Falle der Rechtszensierung wissen wir nicht, wann das Ereignis eintreten wird. Aber wir wissen zumindest, dass die Person bis zum Zensierungszeitpunkt überlebt hat. Daher verwenden wir die Survival-Funktion. Damit benötigen Survival-Daten in aller Regel mindestens zwei Angaben: 1 Eine beobachtete Zeitdauer 2 Einen Indikator, häufig status oder δ genannt. In aller Regel bedeutet δ = 1, dass das Individuum das Ereignis erfahren hat und δ = 0, dass die Beobachtung des Individuums (rechts-)zensiert ist. c Roland Rau Survival Analysis 26 / 35
Einfluss von Rechtszensierung auf Schätzung Daher benötigen Survival-Daten in aller Regel mindestens zwei Angaben: 1 Eine beobachtete Zeitdauer 2 Einen Indikator, häufig status oder δ genannt. In aller Regel bedeutet δ = 1, dass das Individuum das Ereignis erfahren hat und δ = 0, dass die Beobachtung des Individuums (rechts-)zensiert ist. wolpi <- read.table("wolpertinger2015-2.txt", header=true) head(wolpi) lifetime status 1 5.298 1 2 1.098 1 3 10.879 1 4 0.983 0 5 0.138 1 6 0.724 1 c Roland Rau Survival Analysis 27 / 35
Einfluss von Rechtszensierung auf Schätzung Wie verändert sich die Likelihood und die log-likelihood-funktion? n Alt : L(λ x 1, x 2,..., x n ) = f (x i ) Neu : L(λ x 1, x 2,..., x n ) = i=1 f (x i ) S(x i ) i (δ i =1) i (δ i =0) n Alt : log L(λ x 1, x 2,..., x n ) = log f (x i ) Neu : log L(λ x 1, x 2,..., x n ) = i=1 log f (x i ) + i (δ i =1) i (δ i =0) log S(x i ) c Roland Rau Survival Analysis 28 / 35
Einfluss von Rechtszensierung auf Schätzung Doch wie baue ich das in meine Berechnung ein mit dem i...???? n Alt : log L(λ x 1, x 2,..., x n ) = log f (x i ) Neu : log L(λ x 1, x 2,..., x n ) = i=1 log f (x i ) + i (δ i =1) i (δ i =0) log S(x i ) c Roland Rau Survival Analysis 29 / 35
Einfluss von Rechtszensierung auf Schätzung Doch wie baue ich das in meine Berechnung ein mit dem i...???? Ganz einfach!!! f (x) = λe λx ; log f (x) = ln f (x) = log(λ) λx S(x) = e λx ; log S(x) = ln S(x) = λx log L(λ x 1, x 2,..., x n) = = log f (x i) + log S(x i) i (δ i =1) n (log λ λx i) δ i + i (δ i =0) i i n ( λx) (1 δ i) c Roland Rau Survival Analysis 30 / 35
Hausaufgabe Wie lautet die Median-Lebenserwartung für Wolpertinger, also die Dauer bis 50% der Wolpertinger gestorben sind bzw. 50% noch leben, im Datensatz wolpertinger2015-2.txt, den Sie auf meiner Homepage finden? Ab welchem Alter wird man nur noch maximal 1% der Wolpertinger antreffen? Für diejenigen, die noch nicht so firm sind mit R, sei darauf hingewiesen, dass das Laden des Datensatzes etwas komplizierter ist, als wir es bisher gemacht haben. Es gibt nämlich eine Kopfzeile ( header in der Nomenklatur von R), in der die Variablennamen gespeichert sind. wolpizens <- read.table("wolpertinger2015-2.txt", header=true) Die Variablennamen können dann weiterhin nach dem Schema datenname$variablenname also wolpizens$lifetime wolpizens$status abgerufen werden. Wie Sie sicherlich erkannt haben, involviert diese Aufgabe mehrere Schritte! Schreiben Sie sich daher erst einmal auf, welche Schritte Sie nacheinander vollziehen müssen! c Roland Rau Survival Analysis 31 / 35
Vielen Dank für Ihre Aufmerksamkeit! c Roland Rau Survival Analysis 32 / 35
Klein, J. P. and M. L. Moeschberger (2003). Survival Analysis : Techniques for Censored and Truncated Data. Statistics for Biology and Health. New York, NY: Springer. Kleinbaum, D. G. and M. Klein (2005). Survival Analysis. A Self-Learning Text. New York: Springer. c Roland Rau Survival Analysis 33 / 35
Lizenz This open-access work is published under the terms of the Creative Commons Attribution NonCommercial License 2.0 Germany, which permits use, reproduction & distribution in any medium for non-commercial purposes, provided the original author(s) and source are given credit. Für ausführlichere Informationen: http://creativecommons.org/licenses/by-nc/2.0/de/ (Deutsch) http://creativecommons.org/licenses/by-nc/2.0/de/deed.en (English) c Roland Rau Survival Analysis 34 / 35
Kontakt Universität Rostock Institut für Soziologie und Demographie Lehrstuhl für Demographie Ulmenstr. 69 18057 Rostock Germany Tel.: +49-381-498 4044 Fax.: +49-381-498 4395 Email: roland.rau@uni-rostock.de Sprechstunde im Sommersemester 2015: Mittwochs, 09:00 10:00 (und nach Vereinbarung) c Roland Rau Survival Analysis 35 / 35