Analiza przeżycia w R Dr Piotr Denderski Instytut Nauk Ekonomicznych PAN University of Leicester 8 lutego 2019
Plan szkolenia 1. Wprowadzenie 2. Podstawowe pojęcia statystyczne w analize przeżycia 3. Metody nieparametryczne 4. Metody semi-parametryczne: Model proporcjonalnych hazardów Coxa 5. Modele parametryczne 2 / 121
Wprowadzenie Opis problemu, struktura danych, klasa Surv 3 / 121
Czym jest analiza przeżycia? Analiza przeżycia Kluczową zmienną w analizie przeżycia jest czas osiągnięcia określonego stanu. W analizie przeżycia interesuje nas modelowanie (rozkładu) czasu przeżycia. 4 / 121
Czym jest analiza przeżycia? Analiza przeżycia Kluczową zmienną w analizie przeżycia jest czas osiągnięcia określonego stanu. W analizie przeżycia interesuje nas modelowanie (rozkładu) czasu przeżycia. Przykłady: Śmierć Znalezienie pracy Bankructwo Rozwód Wyleczenie choroby Zamknięcie rachunku bankowego 4 / 121
Czym jest analiza przeżycia? Analiza przeżycia Kluczową zmienną w analizie przeżycia jest czas osiągnięcia określonego stanu. W analizie przeżycia interesuje nas modelowanie (rozkładu) czasu przeżycia. Przykłady: Śmierć Znalezienie pracy Bankructwo Rozwód Wyleczenie choroby Zamknięcie rachunku bankowego Bez względu na konkretną aplikację, będziemy określać to zdarzenie mianem porażki. 4 / 121
Co wyróżnia analizę przeżycia spośród innych zagadnień analizy danych? Niech T będzie zmienną (ciągłą bądź dyskretną) reprezentującą czas, jaki mija między dwoma wyraźnie określonymi zdarzeniami, w praktyce nie zawsze możęmy zaobserować realizację T dokładnie: 5 / 121
Co wyróżnia analizę przeżycia spośród innych zagadnień analizy danych? Niech T będzie zmienną (ciągłą bądź dyskretną) reprezentującą czas, jaki mija między dwoma wyraźnie określonymi zdarzeniami, w praktyce nie zawsze możęmy zaobserować realizację T dokładnie: Ucięcie danych Brak obserwacji punktu początkowego (ucięcie z lewej, left censoring) Brak obserwacji punktu końcowego (ucięcie z prawej, right censoring) Brak obserwacji punktu początkowego i końcowego ( ucięcie przedziałowe, interval censoring) 5 / 121
Struktura danych Typowy zbiór danych zawiera: Zbiór agentów/populacja indeksowana i o rozmiarze N Horyzont obserwacji populacji agentów T max Czas przeżycia w próbie t [0, T max ] - ta zmienna jest kluczowa, gdy t = T max nie wiemy, czy do porażki doszło dla t > T max czy nie (a jeśli porażka miała miejsce - nie wiemy kiedy dokładnie. Indeks cenzurowania δ i dla każdego agenta, δ i = 1 gdy zaobserwowano porażkę i δ i = 0 gdy agent do chwili T max jej jeszcze nie zaznał Zbiór charakterystyk opisujących populację, potencjalnie zmienny w czasie z it (np. wiek, płeć, moment wprowadzenia do badania) 6 / 121
Rodzaje ucięcia danych Wyróżniamy trzy typy ucięcia danych: Typ I - czas ocenzurowania obserwacji jest określony w momencie rozpoczęcia obserwacji Typ II - zaprzestanie obserwowania w momencie osiągnięcia stanu końcowego przez określoną część próby Typ III - ucięcie losowe (np. opuszczenie badania klinicznego przez pacjenta z uwagi na czynniki niezwiązane z chorobą) Musimy rozumieć naturę procesu ucięcia obserwacji aby uniknąć obciążenia oszacowań estymatorów 7 / 121
Przykład linie pionowe wydzielają: badanie kliniczne (początek i koniec) oraz fazę obserwacji - przyjęcie agenta do badania - porażka - zdarzenie ucinające obserwację (np. koniec okresu follow-up) 8 / 121
Reprezentacja danych Dla każdego agenta definiujemy czas przeżycia - brak porażki do momentu zakończenia obserwacji (δ i = 0) - porażka, (δ i = 1) 9 / 121
Pakiety i zbiory z którymi będziemy pracować/które warto znać Większość publicznie dostępnych zbiorów jest związana z medycyną... Zbiory publicznie dostępne w pakietach R: survival KMsurv asaur Zbiór danych dot. rozwodów w USA ze strony prof. Germana Rodrigueza, Princeton University (divorce.dat) 10 / 121
Klasa Surv Wprowadźmy w/w dane do R: > library(survival) > tt <- c(7,6,6,5,2,4) > cens <- c(0,1,0,0,1,1) > truncdata <- Surv(tt,cens) > truncdata [1] 7+ 6 6+ 5+ 2 4 x+ oznacza, że dany subiekt nie zmienił stanu przez co najmniej x okresów, zmienna cens to nasza δ i. 11 / 121
Lewe ucięcie danych - rozpoczęcie obserwacji - postawienie diagnozy - brak porażki do momentu zakończenia obserwacji (δ i = 0) - porażka, (δ i = 1) 12 / 121
Lewe ucięcie danych w klasie Surv > tt <- c(7, 6, 6, 5, 2, 4) > cens <- c(0, 1, 0, 0, 1, 1) > backtime <- c(-2, -5, -3, -3, -2, -5) > tm.enter <- -backtime > tm.exit <- tt - backtime > lefttruncobject = Surv(tm.enter, tm.exit, cens) > lefttruncobject [1] (-2, 9+] (-5,11] (-3, 9+] (-3, 8+] (-2, 4] (-5, 9] 13 / 121
Zaglądamy do środka... > help(surv) > help(surv.object) Następne dwie części szkolenia będą się koncentrowały na wyjaśnieniu znaczenia parametrów obiektów tej klasy. 14 / 121
Zadanie programistyczne 1 1. Załadować zbiór divorce.rds, wyświetlić podsumowanie zbioru, nagłówek oraz określić typ każdej ze zmiennych, zmienne opisują długość trwania małżeństwa w USA, zawiera: heduc - wykształcenie męża (0 - mniej niż 12 lat, 1-12 do 15 lat, 2 - więcej niż 15 lat), heblack - czy mąż jest Afroamerykaninem, mixed - czy małżonkowie są mieszanych ras years - zaobserwowany czas trwania małżeństwa div - czy doszło do rozwodu 2. Wykreślić histogramy długości trwania małżeństwa w zależności od zmiennej divorce, wyznaczyć kwantyle obu rozkładów, wygenerować wykresy pudełkowe 3. Zaimplementować obiekt divdata klasy Surv wykorzystując kolumny years i div 4. Odpowiedzieć na pytania: ile mamy obserwacji w zbiorze? Ile rozwodów miało miejsce w pierwszych 20 obserwacjach zbioru? Jak często w próbie doszło do rozwodu warunkując zmienną heduc? 15 / 121
Histogramy długości małżeństwa No divorce observed Divorce Frequency 0 50 100 150 200 250 300 350 Frequency 0 50 100 150 200 250 300 0 20 40 60 80 years 0 20 40 60 80 years 16 / 121
Wykresy pudełkowe długości małżeństwa 0 20 40 60 no divorce divorce 17 / 121
Podstawowe pojęcia statystyczne w analize przeżycia funkcje przeżycia, hazardu, hazardu skumulowanego, momenty centralne czasu przeżycia 18 / 121
Rozkład przeżycia, funkcje przeżycia i hazardu Przyjmijmy, że czas przeżycia T jest ciągłą zmienną losową o funkcji gęstości f (t) i dystrybuancie F (t) = P(T < t). Dla tego rozkładu definiujemy: Funkcja przeżycia S(t) = P(T > t), 0 < t <, S(t) = 1 F (t) = t f (x)dx Funkcja hazardu h(t) = lim 0 P (t T t + T t) 19 / 121
Interpretacja Funkcja przeżycia - prawdopodobieństwo przeżycia momentu t Funkcja hazardu - miara natychmiastowego ryzyka porażki dla agenta w momencie t 20 / 121
Interpretacja Funkcja przeżycia - prawdopodobieństwo przeżycia momentu t Funkcja hazardu - miara natychmiastowego ryzyka porażki dla agenta w momencie t Wykażemy, że między tymi pojęciami występują ścisłe związki (tj. opisują one ten sam rozkład czasu przeżycia). 20 / 121
Podstawowe własności S(t) i h(t) S(0) = 1, lim t S(t) = 0 własność graniczna S(t) może nie zachodzić w estymacji 21 / 121
Podstawowe własności S(t) i h(t) S(0) = 1, lim t S(t) = 0 własność graniczna S(t) może nie zachodzić w estymacji Funkcja przeżycia jest nierosnąca 21 / 121
Podstawowe własności S(t) i h(t) S(0) = 1, lim t S(t) = 0 własność graniczna S(t) może nie zachodzić w estymacji Funkcja przeżycia jest nierosnąca P (t < T < t + T > t) h(t) = lim = lim 0 0 P(T t T [t,t+ )) P(T t) 21 / 121
Podstawowe własności S(t) i h(t) S(0) = 1, lim t S(t) = 0 własność graniczna S(t) może nie zachodzić w estymacji Funkcja przeżycia jest nierosnąca P (t < T < t + T > t) h(t) = lim = lim 0 0 P(T t T [t,t+ )) P(T t) co implikuje h(t) = lim 0 f (t) S(t) = f (t) S(t) 21 / 121
Oczekiwany dalszy czas trwania życia W praktyce ubezpieczeniowej (i nie tylko) często ważną zmienną jest: t S(v)dv µ rl (t) = E [T t T > t] = S(t) oczekiwany dalszy czas trwania życia pod warunkiem osiągnięcia wieku t, mean remaining lifetime 22 / 121
Funkcja hazardu skumulowanego Z definicji funkcji przeżycia dostajemy, że S (t) = f (t) Możemy zatem skorzystać ze wzoru na pochodną logarytmiczną: d ln (f (x)) = f (x) dx f (x) i napisać: h(t) = d dt f (t) log (S(t)) gdyż h(t) = S(t) = S (t) S(t) Ten wynik z kolei pozwala nam, po odcałkowaniu, napisać, że: Hazard skumulowany S(t) = e t 0 h(x)dx H(t) = t 0 h(x)dx 23 / 121
Interpretacja Funkcja hazardu skumulowanego: mierzy skumulowany rozmiar ryzyka porażki do czasu t liczba przypadków porażki w danym okresie (gdyby porażka mogła się powtarzać ) 24 / 121
Przykład - czas przeżycia w USA W pakiecie survival znajduje się zbiór survexp.us który zawiera funkcję hazardu względem płci Pokażę teraz jak wyciągnąć dane z tego zbioru, które posłużą nam do wyznaczenia funkcji przeżycia a potem - momentów rozkładu czasu życia Zaprezentujemy dane dla kobiet i mężczyzn w latach 1940 i 2000 25 / 121
Kod w R >library(survival) >agevec = c(0, 1/365, 7/365, 28/365, 1:106) >hazmale2000 <- survexp.us[,"male","2000"] >hazfemale2000 <- survexp.us[,"female","2000"] >hazmale1940 <- survexp.us[,"male","1940"] >hazfemale1940 <- survexp.us[,"female","1940"] 26 / 121
Czas przeżycia w USA w latach 1940 i 2010 względem płci Rysunek: Log-funkcja hazardu względem wieku 27 / 121
Komentarz Gdybyśmy przyjęli, że znamy postać funkcyjną h(t) co do parametru, to wówczas rozważalibyśmy problem znajdowania parametrów określonego rozkładu W praktyce próbuje się różnych rozkładów - wykładniczego, Weibulla, gamma - my zajmiemy się tym na końcu szkolenia 28 / 121
Wyznaczanie funkcji przeżycia z funkcji hazardu Dla danej funkcji hazardu skumulowanego to zadanie jest stosunkowo proste, wystarczy skorzystać z równania S(t) = e H(t) W przypadku zaprezentowanych danych empirycznych nie znamy postaci parametrycznej H(t) Wniosek: musimy przybliżać funkcję H(t) numerycznie 29 / 121
Całkowanie numeryczne Spróbujmy jednej z najprostszych metod: 1. mamy wektor [x 1, x 2,..., x j,...x 110 ] zmiennej age. 2. Mamy dane wartości funkcji h(x i ) 3. Chcemy przybliżyć całkę h(x)dx 4. Metoda prostokątów - przybliżamy całkę polami prostokątów, dla danego przedziału [x i, x i+1 ] możemy wziąć wysokość prostokątu za h(x i ), h(x i+1 ), bądź ich średnią 5. Ew., jeśli Państwo znają bardziej wyrafinowane metody (kwadratury), proszę z nich skorzystać w następnym zadaniu 30 / 121
Wartość oczekiwana i mediana czasu przeżycia Wartość oczekiwana czasu przeżycia µ = E(T ) = 0 tf (t)dt = µ = 0 S(t)dt Uwaga: może się zdarzyć, że estymator S(t) nie zbiegnie do 0 wraz z t, wówczas trzeba sensownie ograniczyć przedział całkowania z góry. Mediana czasu przeżycia } t med spełnia t med = inf t {S(t) = 1 2 31 / 121
Zadanie programistyczne Cel: wykorzystanie funkcji hazardu do wyznaczenia empirycznej funkcji przeżycia 1. Dla zaprezentowanych na poprzednich slajdach funkcjach hazardu dla kobiet i mężczyzn w latach 1940 i 2010 wyznaczyć skumulowaną funkcję hazardu i empiryczną funkcję przeżycia 2. Zaprezentować cztery otrzymane funkcje przeżycia na wykresie 3. Znaleźć mediany w/w czterech rozkładów przeżycia 32 / 121
Funkcje przeżycia w USA W latach 1940 i 2000 względem płci Rysunek: (raczej niedokładne) przybliżenie funkcji przeżycia w USA w latach 1940 i 2000 względem płci 33 / 121
Metody nieparametryczne estymatory: Kaplana-Meiera, Nelsona-Aalena, przedziały ufności, test log-rank 34 / 121
Punkt odniesienia: brak ucięcia danych Zróbmy krok wstecz: przyjmijmy, że obserwujemy N realizacji czasu przeżycia, obserwowanych bez ucięcia danych Zmienne losowe (T 1,..., T N ) z realizacjami (t 1,..., t N ) Przyjmując, że realizacje są niezależne, możemy zapisać funkcję wiarygodności dla takiej próby: L(f, T 1,..., T N ) = N f (t i ) i=1 Podczas gdy dystrybuanta empiryczna ma postać: ˆF N (t, T 1,..., T N ) = #{i : T i t} N 35 / 121
Empiryczna funkcja przeżycia: dane bez ucięcia Wykorzystując statystyki pozycyjne próby T (1),..., T (N) (i-tą statystyką pozycyjną nazywamy i-ty element posortowanego wektora realizacji z próby) możemy zapisać dystrybuantę jako: ˆF N (t) = 1 T (i) t (1 1 n i + 1 ) gdzie utożsamiliśmy dystrybuantę empiryczną (zm. losową) z wartością funkcji dystrybuanty, ten zapis pozwala nam również określić empiryczną funkcję przeżycia: Ŝ N (t) = T (i) t (1 1 n i + 1 ) Jak zmienią się te obiekty, gdy dane zostaną ucięte? 36 / 121
Funkcja wiarygodności - dane ucięte z prawej strony Rozważamy próbę będącą realizacją dwóch niezależnych wektorów zmiennych losowych: (T 1,..., T N ) z realizacjami (t 1,..., t N ) i indykatora cenzurowania (δ 1,..., δ N ) z realizacjami δ i {0, 1} 37 / 121
Funkcja wiarygodności - dane ucięte z prawej strony Rozważamy próbę będącą realizacją dwóch niezależnych wektorów zmiennych losowych: (T 1,..., T N ) z realizacjami (t 1,..., t N ) i indykatora cenzurowania (δ 1,..., δ N ) z realizacjami δ i {0, 1} Funkcja wiarygodności danych uciętych: L (f, T 1,..., T N, δ 1,..., δ N ) = N f (t i ) δ i S (t i ) 1 δ i = i=1 N h (t i ) δ i S (t i ) i=1 37 / 121
Estymator Kaplana Meiera Propozycja zastąpienia estymatora dystrybuanty empirycznej dla danych nieuciętych miała postać: przez: ˆF N (t) = 1 T (i) t (1 1 n i + 1 ) ˆF N KM (t) = 1 δ i (1 n i + 1 ) T (i) t co daje estymator funkcji przeżycia: Ŝ KM N (t) = T (i) t (1 δ i n i + 1 ) postać ta jest jednak mało wygodna w zastosowaniach, poniżej wyprowadzimy heurystycznie postać alternatywną. 38 / 121
Heurystyczne wyprowadzenie estymatora K-M Rozważmy N hazardzistów grających w ruletkę. Na początku gry wszyscy dysponują swoimi środkami, tj. nie ma żadnych bankrutów, S(0) = 1 Zachodzi, że: S(k) = P (T > k T > k 1) P(T > k 1) = (1 P(T k T > k 1))P(T > k 1) = (1 P(T = k T k))p(t > k 1) = (1 P(T = k T k))s(k 1) = q(k)s(k 1) Rekursywnie: k S(k) = q(t) t=0 39 / 121
Jak estymować q(k) = (1 P(T = k T k))? Niech n i = liczba graczy, których nadal obserwujemy w chwili i, będziemy też używać terminu zbiór ryzka w chwili i Niech d i = liczba graczy, którzy przegrywają w chwili i Przybliżamy: P(T = k T k) = d i n i 40 / 121
Estymator Kaplana-Meiera Alternatywna nazwa w lit. anglojęzycznej: product-limit estimator Zadany wzorem: Ŝ(t) = ( 1 d ) i n t i t i Estymator jest prawostronnie ciągłą funkcją schodkową Interesuje nas tylko to, co się dzieje w momentach obserwacji porażki 41 / 121
Wracamy do obiektu truncdata Przypomnienie: > truncdata [1] 7+ 6 6+ 5+ 2 4 42 / 121
Obliczenie estymatora Ŝ K M (t) Oraz S[0, 2) = 1 t i d i n i q i 1 q i S i = (1 q i ) 2 1 6 0.166 0.84 0.84 4 1 5 0.2 0.8 0.66 6 1 3 0.66 0.34 0.44 43 / 121
Przedziały ufności: metoda Delta Pomimo, że metoda jest nieparametryczna, chcielibyśmy korzystać z statystycznej miary niepewności naszego przybliżenia rozkładu czasu przeżycia W tym celu wykorzystamy metodę delta Metoda Delta Niech X : zm. losowa taka, że E [X ] = µ, Var [X ] = σ 2 i niech g(z) - funkcja ciągła, wówczas momenty zmiennej g(x ) można przybliżać jak następuje: E [g(x )] g (µ) Var [g(x )] σ 2 g (µ) 2 44 / 121
Przedziały ufności czasu przeżycia ( )) Var ln (Ŝ(tk ) = ( ( Var ln 1 d )) i d i n t i t i n t i t i (n i d i ) to pozwala nam uzyskać następujące przybliżenie: ] 2 d i Var[Ŝ(t)] [Ŝ(t) n i (n i d i ) t i t z uwagi na to, że przedziały ufności szacowane w oparciu o to przybliżenie mogą wychodzić poza przedział [0, 1] w praktyce stosuje się poniższy wzór: [ ( ))] Var ln ln (Ŝ(t) [ ln 1 )] 2 (Ŝ(t) t i t d i n i (n i d i ) 45 / 121
Mediana czasu przeżycia i niepewność jej oszacowania Oszacowanie mediany dostajemy poprzez: ˆt med = inf t { t : Ŝ(t) = 1 } 2 Przedział 1 p ufności dostajemy z wzoru: z p g(ŝ(t)) Var[g(Ŝ(t))] g(1 2 ) z p 2 2 przyjmując log-log transformatę g( ) 46 / 121
Implementacja w R - metoda survfit() > km.estimation = survfit(truncdata~1, + conf.type = "log-log") > km.estimation > summary(km.estimation) > plot(km.estimation) 47 / 121
Wynik Ŝ K M (t) 0.0 0.2 0.4 0.6 0.8 1.0 0 1 2 3 4 5 6 7 48 / 121
Zadanie programistyczne Cel: implementacja estymatora K-M oraz przedziałów ufności 1. Zaimplementować i wykreślić estymatory K-M dla małżeństw w zbiorze divorce.rds różnicując małżeństwa mieszane i pozostałe 2. Znaleźć wartości średnie czasu przeżycia (podpowiedź: help(print.survfit)) 3. Czy obydwie mediany można wyznaczyć w tych zbiorach? 4. Proszę porównać otrzymane momenty rozkładu z momentami wyliczonymi ze zbioru bez uwzględnienia obcięcia danych 49 / 121
Wynik Survival function K M estimate 0.0 0.2 0.4 0.6 0.8 1.0 Survival function K M estimate 0.0 0.2 0.4 0.6 0.8 1.0 0 10 20 30 40 50 60 70 Not mixed 0 10 20 30 40 50 60 Mixed 50 / 121
Estymator Nelsona-Aalena/Fleminga-Harringtona Alternatywne podejście: wychodzimy z estymatora funkcji hazardu skumulowanego: H(t) = d i n t i t i a funkcję przeżycia dostajemy z: S(t) = e H(t) 51 / 121
Różnice między K-M a N-A/H-F Estymator K M jest estymatorem produktowym, wartość początkowych q(k) ma bardzo duży wpływ na zachowanie estymatora, np. przy danych lewostronnie uciętych gdy większość porażek ma miejsce przed rozpoczęciem obserwacji W/w problem nie jest tak istotny dla estymatora N-A/H-F, ponieważ zachowanie estymatora zależy od wykładnika sumy q k + 1 52 / 121
Implementacja w R - metoda survfit() > km.estimation = survfit(truncdata~1, + conf.type = "log-log", type = "fh") > km.estimation > summary(km.estimation) > plot(km.estimation) 53 / 121
Zadanie programistyczne Cel: implementacja estymatora N-A 1. Powtórzenie poprzedniego zadania ze zmienionym typem estymatora 2. Porównanie oszacowań N-A i K-M 54 / 121
Porównywanie dwóch rozkładów przeżycia Standardowe pytania: 1. Czy średnie czasy przeżycia w dwóch grupach są równe (H 0 ) czy różne (H a ) - test dwustronny 2. Czy średni czas przeżycia w jednej grupie jest równy (H 0 ) czy wyższy/niższy (H a ) niż średni czas przeżycia w drugiej grupie? 3. Dla parametrycznych rozkładów przeżycia możemy korzystać z metody największej wiarygodności dla konstrukcji testu 4. Co zrobić w przypadku estymatorów nieparametrycznych? 55 / 121
Konstrukcja testu log-rank Przyjmijmy, że jedna grupa jest grupą kontrolną (control), a druga - grupą eksperymentalną (treatment) Dla każego czasu porażki t i możemy w obydwu grupach określić populacje: graczy n 0i i n 1i dla grupy kontrolnej/badanej i liczbę porażek d 0i i d 1i Możemy też określić rozkłady brzegowe łącząc obydwie grupy, dostając d i oraz n i Jeśli realizacje d ji są niezależne między grupami, to zachodzi: p(d 0i n 0i, n 1i, d i ) = ( n0i )( n1i ) d 0i d ( 1i ni ) d i 56 / 121
Interpretacja kombinatoryczna urna z n 0i i n 1i kulami (każda grupa o innym kolorze) Losujemy z tej urny d i kul ze zwracaniem (nie interesują nas konkretni agenci, lecz częstotliwość porażki) Wówczas liczba d 0i ma rozkład hipergeometryczny (jeśli faktycznie między grupami kontrolną i badaną nie ma różnic) 57 / 121
Momenty d 0i µ 0i = E (d 0i ) = n 0id i n i σ 2 0i = Var [d 0i ] = n 0in 1i d i (n i d i ) n 2 i (n i 1) co pozwala nam zdefiniować statystykę testową: U 0 = D (d 0i µ 0i ) i=1 V 0 = Var[U 0 ] = D σ0i 2 i U 0 V0 N (0, 1) = U2 0 V 0 χ 2 (1) 58 / 121
Prosty przykład Agent t i δ i Grupa 1 6 1 C 2 7 0 C 3 10 1 T 4 15 1 C 5 19 0 T 6 25 1 T W grupie kontrolnej C mamy czasy przeżycia: 6, 7 +, 15 W grupie eksperymentalnej T mamy czasy przeżycia: 10, 19 +, 25 59 / 121
Implementacja w klasie Surv > tt <- c(6, 7, 10, 15, 19, 25) > delta <- c(1, 0, 1, 1, 0, 1) > trt <- c(0, 0, 1, 0, 1, 1) zmienna trt - indykator bycia w grupie treatment trtobject = Surv(tt, delta) stratifiedkm = survfit(trtobject~trt, +conf.type ="log-log") logrank = survdiff(trtobject~trt) 60 / 121
Zadanie programistyczne Cel: poznanie implementacji testu log-rank w R, stratyfikacja estymatora K-M 1. Zaimplementować i porównać estymator K-M warunkując wykształceniem męża 2. Porównać rozkład przeżycia małżeństw mieszanych i pozostałych 61 / 121
Stratyfikowany estymator K-M S(t) 0.0 0.2 0.4 0.6 0.8 1.0 <12 12 15 15+ 0 10 20 30 40 50 60 70 Years 62 / 121
Ważony test log-rank Przyjmijmy, że nie traktujemy wszystkich czasów przeżycia jednakowo, i dla ich realizacji t 1 <... < t D definiujemy wagi w i, i {1,..., D}, możemy wówczas skonstruować test ważony: U 0 (w) = D w i (d 0i µ 0i ) i=1 V 0 (w) = D i=1 w 2 i σ 2 0i Najpopularniejszą w praktyce metodą wyboru wag jest: ρ w i = [Ŝ(ti )] dla funkcji przeżycia w całej populacji 63 / 121
Model Coxa proporcjonalnych hazardów metoda coxph(survival), wybór regresorów, testowanie hipotez, diagnostyka 64 / 121
Uwzględnianie cech graczy/pacjentów Zwykle obserwujemy szereg dodatkowych cech, które mogą wpływać na przeżycie/bankructwo, np: płeć, czy osoba pali papierosy wykształcenie Póki co przyjmiemy, że te dodatkowe cechy różnią się między graczami/pacjentami, lecz pozostają stałe w czasie (ten przypadek uogólnia się na zmienne będące liniową funkcją czasu, np. wiek) 65 / 121
Regresja w modelu proporcjonalnych hazardów Założenie proporcjonalnych hazardów: ψ : h 1 (t) = ψh 0 (t) dodatkowo, przyjmiemy nietrywialną zależność stałej skalującej ψ od innych cech charakterystycznych z graczy: ψ = e zβ Przyjmując to założenie rozważamy model proporcjonalnego hazardu Coxa. Hazard h 0 (t) nazywa się hazardem bazowym, właściwym dla przypadku gdy z = 0. 66 / 121
Postać liniowa Dzieląc przez h 0 (t) i biorąc logarytm otrzymujemy prosty model liniowy: ( ) h1 (t) n ln = β i z i h 0 (t) O ile nie uczyniono żadnych założeń co doh 0 (t), to równania modelu podane powyżej kryją w sobie dwa założenia: multiplikatywna zależność między h 0 (t) a log-liniową funkcją zmiennych objaśniających (proporcjonalność), tj. dla dwóch obserwacji o różnych wartościach dla zmiennych niezależnych, stosunek funkcji hazardu dla tych dwóch obserwacji nie zależy od czasu. istnieje log-liniowa zależność między zmiennymi niezależnymi a ukrytą funkcją hazardu. i=1 67 / 121
Zmienna zero-jedynkowa Przypomnijmy, pracujemy pod założeniem proporcjonalności funkcji hazardu Niech dane będą dwie grupy o potencjalnie różnych cechach charakterystycznych z i, ich funkcje hazardu spełniają: h 1 (t) = h 0 (t)e βz 1 h 2 (t) = h 0 (t)e βz 2 Iloraz funkcji hazardu ma postać: HR(t) = e β(z 1 z 2 ) przykładowo, jeśli z 1 odzwierciedla grupę eksperymentalną, a z 2 - kontrolną, to z 1 = 1 i z 2 = 0. 68 / 121
Funkcja częściowej wiarygodności Przypomnijmy, funkcja wiarygodności dla próby: L (λ, t 1,..., t n ) = n f (t i, λ) δ i S (t i, λ) (1 δ i ) = i=1 zdarzenia cenzurujące wpływają na L. n h (t i, λ) δ i S (t i, λ) Funkcja częściowej wiarygodności Główna idea: zdarzenia cenzurujące nie wpływają na jej wartość, jest produktem prawdopodobieństw warunkowych zdarzeń w próbie. i=1 69 / 121
Przypomnienie przykładu Agent t i δ i Grupa 1 6 1 C 2 7 0 C 3 10 1 T 4 15 1 C 5 19 0 T 6 25 1 T W grupie kontrolnej C mamy czasy przeżycia: 6, 7 +, 15 W grupie eksperymentalnej T mamy czasy przeżycia: 10, 19 +, 25 ψ 1 = ψ 2 = ψ 4 = 1, ψ 3 = ψ 5 = ψ 6 = ψ W grupie eksperymentalnej T przeciętnie większe, oczekujemy β < 0 70 / 121
Obliczanie partial likelihood Hazard pacjenta i w chwili j: h i (t j ) = h 0 (t j )ψ i W grupie kontrolnej mamy ψ i = 1 (hazard bazowy) W grupie eksperymentalnej mamy ψ i = ψ czasy śmierci t i odpowiadają drugiej kolumnie w tabeli, D różnych wartości W rozważanym przypadku każdy czas śmierci - śmierć jednego pacjenta (brak remisów, rozważymy to później) Rozważmy t j, Jakie jest p-stwo, że i-ty pacjent właśnie w tej chwili umrze? Punktem odniesienia jest zbiór ryzyka, tj. liczba pacjentów którzy nadal żyją R j i są obserwowani. p j = h i (t j ) k R j h k (t j ) = h 0 (t j )ψ i k R j h 0 (t j )ψ j = Partial likelihood zadany jest wzorem: D L(t 1,..., t D ) = p i i=1 ψ i k R j ψ j 71 / 121
Nasz przykład p 1 = 1 3ψ + 3 w mianowniku: 6 pacjentów, troje z grupy T, troje z grupy C, w liczniku 1 pacjent z grupy C p 2 = ψ 3ψ + 1 w mianowniku: 4 pacjentów, troje z grupy T, jeden z grupy C, w liczniku 1 pacjent z grupy T p 3 = 1 2ψ + 1 w mianowniku: 3 pacjentów, dwoje z grupy T, jeden z grupy C, w liczniku: 1 pacjent z grupy C p 4 = 1 (1) 72 / 121
Funkcja częściowej wiarygodności Wypracowaliśmy funkcję częściowej wiarygodności dla naszych danych: 1 ψ 1 L(ψ) = 3ψ + 3 3ψ + 1 2ψ + 1 następnie należy zmaksymalizować tę funkcję (bądź jej dowolną rosnącą transformację, np. ln(l(ψ)) i znaleźć arg max ψ = e β Przy testowaniu potrzebne są pierwsza (score) i druga (informacja) pochodna tej funkcji. 73 / 121
Wynik procedury 74 / 121
Równoczesne porażki - jak wpływają na L(β)? Agent t i δ i Grupa 1 6 1 C 2 6 1 T 3 7 0 C 4 10 1 T 5 15 1 C 6 19 0 T 7 25 0 T Główna idea: dostosowanie mianownika we wzorze na p-stwo warunkowe (zbiór R i ) Należy zliczyć na ile sposobów 2 agentów którzy w chwili t i = 6 przegrywają może być z grupy kontrolnej, bądź po jednym z obydwu grup bądź obydwu z grupy eksperymentalnej Znaczny ciężar obliczeniowy w dużych próbach 75 / 121
Metoda coxph(survival) Fortunnie, nie musimy przeprowadzać tego rodzaju obliczeń z ręki, są zaimplementowane w metodzie coxph(survival) Przyjrzyjmy się składni tej metody (help(coxph)) 76 / 121
Test Walda Test Walda Niech ˆβ będzie oszacowaniem parametru maksymalizującym L(β), i niech I ( ˆβ) ( ) = L ˆβ będzie informacją z próby. W przybliżeniu, Var[ ˆβ] = 1 I ( ˆβ). Testem Walda dla oszacowania ˆβ jest: Z = ˆβ Var[ ˆβ] Rozkład: Z 2 χ 2 (1) 77 / 121
Test score Test score Główna idea: jeśli nasze oszacowanie jest bliskie hipotezie zerowej β = 0 to pochodna funkcji L(β) powinna być mała wokół L(0) (jesteśmy blisko maksimum) Z = L (β) I (β = 0) Ponownie rozkład Z 2 χ 2 (1) 78 / 121
Test ilorazu wiarygodności ( ) LR 2 = L 2 β = ˆβ L (β = 0) co po zlogarytmizowaniu stronami daje: [ ( ) ] 2 l β = ˆβ l (β = 0) z rozkładem analogicznym do przedstawionych powyżej dwóch testów. 79 / 121
Przykład > result.cox <- coxph(trtobject~trt) > summary(result.cox) 80 / 121
Estymacja hazardu bazowego Po wyestymowaniu wektora parametrów β wiemy już, o ile szybciej/wolniej umierają osboty z określonej grupy, co z funkcjami przeżycia? d i h 0 (t i ) = j R i e ˆβ T z j Uwaga: gdy β = 0 ten estymator redukuje się do estymatora N A. Bazową funkcję przeżycia wyprowadzamy z bazowego hazardu skumulowanego: S 0 (t) = e H 0(t) A funkcję przeżycia dla określonej wartości z dostajemy z: S(t z) = [S 0 (t)] e ˆβ T z 81 / 121
Zadanie programistyczne 1. W oparciu o nasz przykład, wyestymować hazard bazowy oraz funkcje przeżycia grupy kontrolnej i eksperymentalnej 2. Podpowiedź: help(basehaz), opcja centered=false 82 / 121
Zmienne objaśniające ciągłe i kategoryczne Do tej pory rozważyliśmy bardzo prostą regresję z jedną zmienną zero-jedynkową dla porównania grupy kontrolnej z eksperymentalną Naturalnie, w danych mamy do dyspozycji zwykle dużo więcej informacji (np. zmienne kategoryczne bądź zmienne ciągłe) Wraz z wprowadzeniem większej ilości zmiennych pojawiają się pytania o ich dobór i wpływ na oszacowania parametrów modelu Potrzebujemy bogatszego zbioru danych niż te, z których korzystaliśmy do tej pory 83 / 121
Zbiór danych pharmacosmoking(asaur) ttr - czas do ponownego rozpoczęcia palenia relapse - indykator, czy do agent i ponownie zaczął palić grp - indykator przynależności do grupy, poziomy combination i patchonly age - wiek w momencie rozpoczęcia eksperymentu agegroup2 - zmienna wiek rozbita na grupy 21-49 i 50+ agegroup4-21-34, 35-49, 50-64, 65+ employment: ft (full-time), pt (part-time), other (?) 84 / 121
Zadanie programistyczne 1. Wyestymować model (A) Coxa ze zmienną objaśniającą grp, przeprowadzić testy istotności oszacowań parametrów modelu, wyestymować funkcję hazardu bazowego i funkcje przeżycia 2. Wyestymować model (B) Coxa ze zmienną objaśniającą agegroup4 3. Wyestymować model (C) Coxa ze zmiennymi objaśniającymi agegroup 4 i employment 4. W każdym z przypadków zinterpretować uzyskane oszacowania parametrów i wpływ zmiennych na funkcję przeżycia 85 / 121
Testowanie hipotez - wybór modelu Rozważmy trzy modele: 1. Model A: zmienna objaśniająca X 2. Model B: zmienna objasniająca Y 3. Model C: zmienne objaśniające X, Y Powiemy, że modele A i B są zagnieżdżone w modelu C (lecz brak takiej relacji między modelami A i B). 86 / 121
Testowanie hipotez: modele zagnieżdżone W jaki sposób porównać A z C bądź B z C? Odpowiedzią jest test ilorazu (niepełnych) wiarygodności. Dwukrotność różnicy wartości L(β) ma rozkład χ 2 (k 1 k 2 ) gdzie k 1 i k 2 to stopnie swobody modelu większego i zredukowanego, odpowiednio. Reguła pamięciowa: model większy (z większą liczbą zmiennych/parametrów) będzie lepiej dopasowany, niż model mniejszy, interesuje nas skala różnicy dopasowania. 87 / 121
Zadanie programistyczne Porównać modele B i C podpowiedź: wystarczy użyć do tego funkcji anova(modelb, modelc) gdzie argumentami są obiekty coxph.object 88 / 121
Sekwencyjny dobór zmiennych? Pytanie: jak wybrać zestaw zmiennych/porównać modele niezagnieżdżone? W (niedoskonałej) praktyce spotyka się często dwa podejścia: forward - zaczynamy od modeli z jedną zmienną, wybieramy ten z najmniejszą wartością p-value oszacowania parametru następnie dodajemy pojedynczo pozostałe zmienne itd., regułą stopującą jest, gdy żadna testowana zmienna dodatkowa nie ma p-value dla swojego parametru regresji poniżej pewnego p backward - analogicznie jak wyżej, lecz zaczynamy od pełnego zestawu zmiennych i usuwamy je pojedyńczo Problem: p-values między krokami w/w procedur nie są porównywalne 89 / 121
Kryterium informacyjne Akaike dla modelu M( ˆβ, k) z k parametrami i oszacowanym wektorem parametrów ˆβ AIC M( ˆβ,k) = 2l( ˆβ) + 2k Człon 2l( ˆβ) odzwierciedla stopień dopasowania (im mniejsza wartość tego członu, tym ono lepsze) Człon 2k to kara za stosowanie k parametrów Mniejsze AIC - lepszy model 90 / 121
Ilustracja: plik akaike.r modelall.coxph <- coxph(surv(d$ttr, d$relapse) ~ d$grp + d$gender + d$race + d$employment + d$yearssmoking + d$levelsmoking + d$agegroup4 + d$priorattempts + d$longestnosmoke) result.step <- step(modelall.coxph, scope=list(upper=~ d$grp + d$gender + d$race + d$employment + d$yearssmoking + d$levelsmoking + d$agegroup4 + d$priorattempts + d$longestnosmoke, lower=~d$grp) ) 91 / 121
Uwzględnianie nieliniowej zależności od zmiennych ciągłych Omówiliśmy już jedno podejście - podział obserwacji zmiennej ciągłej na kilka grup i potraktowanie ich jako zmiennych kategorycznych (zmienna agegroup4) Alternatywą jest pozwolić procedurze maksymalizującej partial likelihood wybrać nieliniową aproksymację wpływu zmiennej ciągłej na funkcję hazardu Wygodnym narzędziem implementacji drugiego rozwiązania są splajny Stosowanie splajnów niesie ze sobą dwa problemy: dowolności wyboru węzłów oraz dowolności wyboru stopnia splajnu W praktyce stosuje się tzw. penalizowaną częściową funkcję wiarygodności - funkcją kary jest całka z drugiej pochodnej partial likelihood W metodzie coxph(survival) musimy wprowadzić nowy regresor, np. pspline(zmienna, df = X) 92 / 121
Zadanie programistyczne 1. Wyestymować model Coxa ze zmiennymi grp, employment i splajnem stopnia 4-go zmiennej age pspline(age, df=4) 2. Wykreślić wykres termplot(modelcox, se=t, terms=x) gdzie X - indykator regresora w modelu modelcox. 3. Czy osoby starsze szybciej czy wolniej powracały do palenia? 93 / 121
Wykres Log hazard 2 1 0 1 2 20 30 40 50 60 70 80 age 94 / 121
Diagnostyka: reszty martyngałowe Analogicznie do zwykłej regresji: wnioskowanie w oparciu o reszty z modelu oraz zmiany oszacowań parametrów modelu Reszty martyngałowe Niech δ i = 1 gdy i-ty agent umrze/zbankrutuje i 0 w przeciwnym razie. Zdefiniujmy różnicę martyngałową dla oszacowań parametrów modelu ze zmiennymi objaśniającymi stałymi w czasie jako: m i = δ i Ĥ0(t i )e ˆβ T z i Zachodzą następujące własności: im i (, 1] ie[m i ] = 0 N i m i = 0 Wykres reszt martyngałowych może podpowiedzieć charakter brakującej zależności funkcyjnej w modelu 95 / 121
Przykład zastosowania result.0.coxph <- coxph(surv(d$ttr, d$relapse) ~ 1) rr.0 <- residuals(result.0.coxph, + type="martingale") Dokładnie jak w przypadku obiektów klas zwracanych przez inne metody estymacji. 96 / 121
Zadanie programistyczne 1. Dla modelu wybranego iteracyjną metodą Akaike wyznaczyć rozkład warunkując zmiennymi objaśniającymi. 97 / 121
Diagnostyka: reszty dewiacyjne Reszty dewiacyjne Niech m i będzie resztą martyngałową, wówczas możemy zdefiniować resztę dewiacyjną: d i = sgn(m i ) 2(m i + δ i ln(δ i m i )) Zachodzą następujące własności: Reszty d i są symetrycznie rozłożone wokół E[d i ] = 0 N i=1 d 2 i = LR 98 / 121
Zadanie programistyczne 1. Uzupełnić plik jacknife.r i wyznaczyć obserwacje wpływowe ze względu na zmienną wiek 2. podpowiedzi: Analogicznie do obserwacji wpływowych w klasycznej analizie regresji Usuwamy pojedynczo każdą z obserwacji i analizujemy wpływ jej pominięcia 99 / 121
Wykres reszt jacknife Change in coefficient for age 0.002 0.001 0.000 0.001 0.002 0.003 0 20 40 60 80 100 120 Observation 100 / 121
Testowanie założenia o proporcjonalności hazardów Bez założenia o proporcjonalności nie wyeliminowalibyśmy hazardu bazowego z obliczeń partial likelihood W przypadku pojedyńczej zmiennej zerojedynkowej wizualnie to założenie odpowiada równej odległości log-hazardów dla obu grup względem t Zmienna kategoryczna z wieloma kategoriami prowadzi do równoległych log-hazardów Poniżej omówimy dwie metody weryfikacji w/w założenia: wykresy log-skumulowanych hazardów oraz tzw. reszty Schoenfelda 101 / 121
Log-skumulowane hazardy Przypomnienie, dla jednej zmiennej zero-jedynkowej z: S 1 (t) = [S 0 (t)] eβ = ln(s 1 (t)) = e β ln(s 0 (t)) chcemy ponownie wziąć logartym, musimy obie strony równania przemnożyć uprzednio przez 1: ln( ln(s 1 (t))) = β + ln( ln(s 0 (t))) powyższa funkcja to komplementarna log-log transformacja, jej wyznaczenie jest trywialne dla każdej z funkcji przeżycia z osobna, następnie obrazujemy w/w krzywe na wykresie. 102 / 121
Ilustracja cloglog.po 2.0 1.5 1.0 0.5 0.0 0.5 Patch Only Combination 0 1 2 3 4 5 logtime.po 103 / 121
Reszty Schoenfelda Wyprowadzamy z partial likelihood i score a: l( ˆβ) = z i β ln i D k Ri e z kβ l (β) = z i z k p(β, z k ) i D k Ri gdzie: p(β, z k ) = e z kβ j R k e z j β 104 / 121
Reszty Schoenfelda w praktyce Resztą Schoenfelda nazwiemy każdy pojedyńczy element sumowania w definicji l (β), ˆr i = z i k R i z k p(β, z k ). Wykres tych reszt jako funkcji z i powinien być wycentrowany wokół zera, jeśli założenie proporcjonalności jest spełnione. Reszty te są zdefiniowane jedynie dla czasów śmierci. Jeśli mamy więcej niż jedną zmienną objaśniającą, to wówczas należy wyznaczyć Reszty Schoenfelda dla każdej zmiennej objaśniającej z osobna. Uzyskujemy je analogicznie do reszt martyngałowych, zmieniając jedynie zmienną type = schoenfeld 105 / 121
Metody parametryczne rozkład wykładniczy i Weibulla 106 / 121
Wykładniczy rozkład czasu przeżycia H(t) = t 0 h(x)dx = S(t) = e λt f (t) = λe λt t 0 λdx = λt µ = E(T ) = S(t)dt = 1 0 λ t med : 1 2 = e λt med = t med = ln(2) λ Komentarz: własność stałej funkcji hazardu jest mało realistyczna. 107 / 121
Metoda Największej Wiarygodności przyjmijmy rozkład wykładniczy czasu przeżycia z parametrem λ, gdy niektóre obserwacje są ucięte, to wówczas: L (λ, t 1,..., t n ) = n f (t i, λ) δ i S (t i, λ) (1 δ i ) i=1 = n h (t i, λ) δ i S (t i, λ) i=1 gdzie przez δ i = 1 oznacza, że obserwacja nie jest ucięta. 108 / 121
Metoda Największej Wiarygodności: rozkład wykładniczy L (λ) = n i=1 ] [λe t i δi [ ] λ e λt 1 δi i wprowadzając d = N i=1 δ i oraz V = N i=1 t i możemy zapisać logartym fukcji wiarygodności: l (λ) ln (L (λ)) = d ln (λ) λv skąd możemy natychmiast wyprowadzić estymator ˆλ: (ˆλ ) l = 0 ˆλ = d V 109 / 121
Wariancja ˆλ ) l (ˆλ = ḓ ) (ˆλ λ = I 2 Var[ˆλ] 1 ) = I (ˆλ ˆλ 2 d = d V 2 110 / 121
Zadanie programistyczne 1. Wyznaczyć ˆλ dla obiektu TruncData 2. Wykreślić funkcję hazardu i funkcję przeżycia Przypomnienie: > truncdata [1] 7+ 6 6+ 5+ 2 4 111 / 121
Weibulla rozkład czasu przeżycia Parametr kształtu: α, parametr skali: 1 λ h(t) = αλ (λt) α 1 = αλ α t α 1 H(t) = (λt) α S(t) = e (λt)α ( ) E(T ) = Γ 1 + 1 α λ t med = (ln (2)) 1 α λ 112 / 121
Alternatywna parametryzacja Weźmy σ = 1 α oraz µ = ln (λ), wówczas: oraz h(t) = 1 σ e µ σ t 1 σ 1 S(t) = e e µ σ t 1 σ Gdy σ = 1 wówczas rozkład Weibulla redukuje się do rozkładu wykładniczego z parametrem λ 113 / 121
Zadanie programistyczne Cel: ilustracja elastyczności specyfikacji funkcji hazardu w rozkładzie Weibulla 1. Wykreślić funkcję h(t) w rozkładzie Weibulla dla par parametrów: α = 2, λ = 0.05 α = 1, λ = 0.05 α = 0.5, λ = 0.05 114 / 121
log-log transformacja rozkładu Weibulla ln ( ln (S(t i ))) = µ σ + 1 σ ln(t i) Ten wzór pozwoli nam na graficzne porównanie estymatora K M z rozkładem Weibulla 115 / 121
Zadanie programistyczne 1. Oszacować estymator K-M dla czasu przeżycia małżeństw mieszanych ze zbioru divorce 2. Zapisać szacowaną funkcję przeżycia, wykreślić rysunek jej log-log transformacji (Y ) względem logarytmu czasu przeżycia (X ) 3. Do wykresu dodać linię regresji Y na X 116 / 121
Wykres lls 8 6 4 2 2 1 0 1 2 3 4 lt 117 / 121
Dobór rozkładu Weibulla dla estymatora K-M Mając dwa stopnie swobody (dwa parametry) możemy uzyskać ich identyfikację np. wymagając, żeby implikowana S(t) odpowiadała wyestymowanym wartościom Ŝ K M (t) w dwóch datach. Niech y 1 = ln ( ln (s(t 1 ))), y 2 = ln ( ln (s(t 2 ))), wówczas: ˆα = y 1 y 2 ln (t 1 ) ln (t 2 ) y 2 ln(t 1 ) y 1 ln(t 2 ) y ˆλ = e 1 y 2 118 / 121
Przykład: pharmacosmoking, grupa patchonly Survival probability 0.0 0.2 0.4 0.6 0.8 1.0 0 50 100 150 Days to relapse 119 / 121
Rozkład Weibulla w modelu z wieloma regresorami Rozkład Weibulla jako rozkład położenia i skali: zaburzenia z rozkładu EVD. ln (t) = µ + γz + σ ln (ε) 120 / 121
Przykład ttr = d$ttr[d$ttr> 0] relapse = d$relapse[d$ttr>0] age = d$age[d$ttr>0] employment = d$employment[d$ttr > 0] grp = d$grp[d$ttr>0] model.pharm.weib <- survreg(surv(ttr, relapse) ~ grp + age + employment, dist="weibull") summary(model.pharm.weib) Jedyna modyfikacja to zmiana parametru dist w funkcji survreg. Selekcja zmiennych itd. bez zmian. 121 / 121