2013-09-23 7 views
5

Próbuję modelować czas życia klienta w subskrypcjach. Ponieważ dane są cenzurowane, będę używał pakietu przetrwania R, aby stworzyć krzywą przetrwania.Jak wprowadzić ocenzurowane dane do modelu przetrwania R?

Oryginalny subskrypcje zbiór danych wygląda następująco ..

id start_date end_date 
1 2013-06-01 2013-08-25 
2 2013-06-01 NA 
3 2013-08-01 2013-09-12 

Które manipulować wyglądać tak ..

id tenure_in_months status(1=cancelled, 0=active) 
1 2    1 
2 ?    0 
3 1    1 

..w aby nakarmić model przetrwania

obj <- with(subscriptions, Surv(time=tenure_in_months, event=status, type="right")) 
fit <- survfit(obj~1, data=subscriptions) 
plot(fit) 

Co mam wstawić zmienną tenure_in_months dla przypadków konsorcjalnych, tj. Przypadków, w których subskrypcja jest nadal aktywna dzisiaj - czy powinna to być kadencja do dziś, czy powinna być NA?

+0

Powinno to być do dnia, w którym zebrałeś swoje dane, myślę, że to "dzisiaj". – drevicko

Odpowiedz

1

Jeśli brakująca data zakończenia oznacza, że ​​subskrypcja jest nadal aktywna, musisz wziąć czas do bieżącej daty jako daty cenzora.

Nie będzie działać z obiektem przeżycia. Myślę, że te przypadki zostaną pominięte. Nie tego chcesz! Ponieważ te przypadki zawierają ważne informacje o przeżyciu.

kod SQL, aby uzyskać czas do wydarzenia (użyj w wybranych części zapytania)

DATEDIFF(M,start_date,ISNULL(end_date,GETDATE()) AS tenure_in_months 

BTW: użyłbym różnicę w dniach, dla mojej analizy. Nie ma sensu dopełniać czasu do miesięcy.

+1

Opinia statystyczna jest dobra, ale kod jest nieważny R. –

+0

Kod to SQL. Myślałem, że sam wykonałeś zapytanie, więc będziesz w stanie to zmienić. – Wietze314

+0

Nie zauważyłem SQL wspomnianego w pytaniu ... – drevicko

8

Najpierw powiem, że nie zgadzam się z poprzednią odpowiedzią. Aby subskrypcja była nadal aktywna, nie powinna być traktowana jako dzierżawa do dzisiaj ani NA. Co dokładnie wiemy o tych subskrypcjach? Wiemy, że do tej pory pracowali, co jest równoznaczne z powiedzeniem tenure_in_months za te spostrzeżenia, chociaż nie wiemy dokładnie, jak długo one są, są dłuższe niż ich czas pracy do dzisiaj.

Jest to sytuacja określana jako prawo-cenzor w analizie przeżycia. Zobacz: http://en.wikipedia.org/wiki/Censoring_%28statistics%29

więc dane musiałby tłumaczyć z

id start_date end_date 
1 2013-06-01 2013-08-25 
2 2013-06-01 NA 
3 2013-08-01 2013-09-12 

do:

id t1 t2 status(3=interval_censored) 
1 2 2   3 
2 3 NA   3 
3 1 1   3 

Potem trzeba będzie zmienić przedmiot R surv od:

Surv(time=tenure_in_months, event=status, type="right") 

do:

Surv(t1, t2, event=status, type="interval2") 

Aby uzyskać więcej informacji o składni, zobacz artykuł http://stat.ethz.ch/R-manual/R-devel/library/survival/html/Surv.html. Bardzo dobre podsumowanie szczegółów obliczeniowych można znaleźć: http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_lifereg_sect018.htm

Interwałowe ocenzurowane dane można przedstawić na dwa sposoby. Dla pierwszego zastosowania typ = interwał i kody pokazane powyżej. W tym użyciu wartość argumentu time2 jest ignorowana, chyba że event = 3.Drugim podejściem jest myślenie o każdej obserwacji jako o przedziale czasowym z (-infinity, t) dla lewej cenzorowanej, (t, nieskończoności) dla prawej cenzury, (t, t) dla dokładnej i (t1, t2) dla przedziału. Jest to podejście stosowane dla typu = interval2, gdzie NA zajmuje miejsce nieskończoności. Okazało się, że jest bardziej użyteczny.

+0

Ach, masz rację, myślę. Właściwy cenzor powinien oznaczać czas zdarzenia w '[time, + inf)' ale w R, myślę, jest to dokładnie jak dokładne zdarzenie na 'time' przy użyciu' type = 'interval''. Potrzebujesz 'interval2', zobacz edycję. –

+0

Uważam, że twój wpis dla id 2 jest całkiem błędny. Musisz wiedzieć, kiedy "NA" zostało zmierzone. Wpis t1 powinien być wówczas w tym czasie minus 2013-06-01. – drevicko

0

Musisz wiedzieć datę dane zebrano. Wartość tenure_in_months dla id 2 powinna być wówczas tą datą minus 2013-06-01.

W przeciwnym razie uważam, że kodowanie danych jest poprawne. status z 0 dla id 2 wskazuje, że jest poddawany prawemu ocenzurowaniu (co oznacza, że ​​mamy dolną granicę jego życia, ale nie górną granicę).

Powiązane problemy