Jakie są opcje w modelu proporcjonalnej regresji hazardu, gdy resztki Schoenfelda nie są dobre?

15

Robię regresję proporcjonalną hazardu Coxa przy użyciu R coxph, która obejmuje wiele zmiennych. Resztki Martingale wyglądają świetnie, a reszty Schoenfelda są świetne dla PRAWIE wszystkich zmiennych. Istnieją trzy zmienne, których reszty Schoenfelda nie są płaskie, a charakter zmiennych jest taki, że ma sens, że mogą się zmieniać w czasie.

Są to zmienne, które tak naprawdę mnie nie interesują, więc tworzenie ich warstw byłoby w porządku. Jednak wszystkie z nich są zmiennymi ciągłymi, a nie zmiennymi kategorialnymi. Uważam więc, że warstwy nie są realną trasą *. Próbowałem budować interakcje między zmiennymi a czasem, jak opisano tutaj , ale otrzymujemy błąd:

  In fitter(X, Y, strats, offset, init, control, weights = weights,  :
  Ran out of iterations and did not converge

Pracuję z prawie 1000 punktów danych i pracuję z pół tuzinem zmiennych z wieloma czynnikami, więc wydaje mi się, że przekraczamy granice tego, jak te dane można kroić i kroić w kostkę. Niestety, wszystkie prostsze modele, które wypróbowałem przy mniejszej liczbie zmiennych, są wyraźnie gorsze (np. Reszty Schoenfelda są bardziej kruche dla większej liczby zmiennych).

Jakie są moje opcje? Ponieważ nie dbam o te szczególnie źle zachowane zmienne, chciałbym po prostu zignorować ich wyniki, ale podejrzewam, że to nie jest poprawna interpretacja!

* Jeden jest ciągły, jeden jest liczbą całkowitą o zakresie ponad 100, a drugi jest liczbą całkowitą o zakresie 6. Może binning?

jeffalstott
źródło
2
Co powiesz na zastosowanie rozszerzonego modelu Coxa z interakcją czasową dla zmiennych zależnych od czasu?
kirk
A co z rozważaniem opcji zmiennych towarzyszących upływowi czasu (takich jak -tvc- w Stata)?
Carlo Lazzaro

Odpowiedzi:

1

Najbardziej eleganckim sposobem byłoby użycie parametrycznego modelu przeżycia (Gompertz, Weibull, wykładniczy, ...), jeśli masz jakieś pojęcie, jak może wyglądać podstawowe zagrożenie.

Jeśli chcesz pozostać przy swoim modelu Coxa, możesz wziąć rozszerzony model Coxa o współczynnikach zależnych od czasu . Pamiętaj, że istnieją również rozszerzone modele Coxa z zależnymi od czasu kowariatami - to nie rozwiązuje twojego problemu!

Dla R patrz tutaj: http://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf

Jochen
źródło
1

Kilka pomysłów -

1) Wypróbuj podejście do modelowania Royston-Parmar, np. Http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0047804 i odnośniki w nim zawarte. Osiągnęliśmy z tym użyteczne wyniki.

2) Centrowanie i standaryzacja zmiennych ciągłych może być przydatne numerycznie.

3) W wielu modelach z czynnikami o dużej liczbie poziomów istnieje kilka poziomów, na których zasadniczo nie ma danych. Scalanie poziomów w celu ich usunięcia, ale oparte na dobrych kryteriach merytorycznych, może być bardzo pomocne.

Powodzenia!

astaines
źródło
1

Jeśli korzystanie z interakcji z czasem bazowym nie działa, możesz wypróbować funkcje krokowe (więcej informacji można znaleźć w vignett e Therneau 2016 ).

Funkcje krokowe są rozwarstwione według określonych współczynników w określonych odstępach czasu. Po zobaczeniu wykreślonych reszt Schoenfelda dla problematycznych zmiennych towarzyszących (tj. plot(cox.zph(model.coxph))) Musisz wizualnie sprawdzić, gdzie linie zmieniają kąt. Spróbuj znaleźć jeden lub dwa punkty, w których beta wydaje się znacznie inny. Załóżmy, że zdarzyło się to w czasie 10 i 20. Tak więc stworzymy dane survSplit()z survivalpakietu, który utworzy ramkę danych dla określonego grupowania modelu danych w wyżej wymienionych czasach:

step.data <- survSplit(Surv(t1, t2, event) ~ 
                      x1 + x2,
                      data = data, cut = c(10, 20), episode = "tgroup")

Następnie uruchom cox.phmodel z stratafunkcją jako interakcje ze zmiennymi problematycznymi (jak w przypadku interakcji z czasem, nie dodawaj głównego efektu dla czasu lub warstw):

> model.coxph2 <- coxph(Surv(t1, t2, event) ~ 
                          x1 + x2:strata(tgroup), data = step.data)

I to powinno pomóc.

Yuval Spiegler
źródło