statable Statystyka do studiów i badań naukowych

Regresja Coxa z kowariatą (covariate) zależną od czasu (cecha zmienia się w czasie)

W skrócie

Niektóre cechy zmieniają się w trakcie obserwacji: zaczyna się terapia, następuje przeszczep, wartość laboratoryjna jest mierzona ponownie. Traktowanie takiej cechy jako stałej grupy „kiedykolwiek zmienione” tworzy błąd nieśmiertelnego czasu (immortal time bias). Regresja Coxa z kowariatą (covariate) zależną od czasu go unika: każda osoba ma wartość 0 do zmiany i wartość 1 od zmiany. Wybiera się ją w pytaniu „Jak długo trwa, zanim wystąpi zdarzenie?” w sekcji „Więcej opcji” → „Cecha zmienia się w czasie”.

Błąd nieśmiertelnego czasu

Kto zmienia się później, musiał dotrwać do tej chwili. Jeśli taką osobę od początku zalicza się do grupy zmienionych, ta grupa wygląda na dłużej żyjącą tylko z powodu tego błędu. Zmierzone w symulacji z prawdziwym ilorazem hazardów równym 1: stała grupa „kiedykolwiek zmienione” daje średnio HR 0,49 i jest istotna statystycznie w każdym przebiegu; kowariata (covariate) zależna od czasu daje 0,99 i wynik istotny statystycznie w 4% przebiegów. W danych o sercach ze Stanfordu (przeszczep) stała grupa spada do HR 0,27, kowariata zależna od czasu do 1,04. Dlatego kowariata może mieć w każdym momencie tylko wartości, które były już wtedy znane.

Dane: postać przedziałów

Statable potrzebuje tabeli w postaci przedziałów (proces liczący): jeden wiersz na osobę i przedział z identyfikatorem, początkiem, końcem, zdarzeniem i wartością, która obowiązywała w tym przedziale. Przedziały są otwarte z lewej i domknięte z prawej: (początek, koniec]. Wartość obowiązuje od początku, zdarzenie następuje na końcu. Zdarzenie (1) jest tylko w ostatnim wierszu osoby. Na karcie wybiera się identyfikator, początek i kowariatę (covariate) zależną od czasu; czas powyżej to koniec. Przed obliczeniem Statable sprawdza: początek mniejszy niż koniec, brak nakładania, brak luki, co najwyżej jedno zdarzenie na osobę i tylko w ostatnim wierszu.

Asystent „Punkty czasowe na osobę → przedziały”

Jeśli tabela ma tylko jeden wiersz na osobę z końcem, zdarzeniem i momentem zmiany (puste = nigdy), asystent w sekcji Dane > Przekształć buduje tabelę w postaci przedziałów: wartość 0 przed zmianą, 1 od zmiany, wybrane kolumny osoby przechodzą do każdego wiersza. Podaje, ile osób miało zmianę, ile miało zmianę na początku lub po końcu obserwacji (błąd w danych? czy już błąd nieśmiertelnego czasu (immortal time bias) w surowych danych) i ile w dniu zdarzenia. Nowa tabela nie przejmuje wagi przypadku.

Zmiana w dniu zdarzenia

Jeśli zmiana przypada na dzień zdarzenia, wynik zależy od reguły. Ściśle (domyślnie): zmiana obowiązuje dopiero potem, zdarzenie nadal należy do starej wartości. „Liczy się od razu”: zmiana jest przesuwana naprzód o połowę najmniejszego odstępu czasowego w danych (0,5 dla dni, ułamek dla lat), tak samo porządkuje to survival; Statable podaje tę wartość. W danych o sercach ze Stanfordu dotyczy to jednego pacjenta i przesuwa iloraz hazardów dla przeszczepu z 0,90 (ściśle) do 0,99 (liczy się od razu). Statable zawsze podaje regułę i liczbę dotkniętych osób.

Odczytywanie wyniku

Coś innego: efekt zależny od czasu

Kowariata zależna od czasu to nie to samo co efekt zależny od czasu (tt() w R): tam cecha pozostaje stała (na przykład wiek), zmienia się jej efekt w czasie, więc narusza proporcjonalność. Statable tego nie oferuje.

Raportowanie wyniku

Regresja Coxa z kowariatą (covariate) zależną od czasu: test LR χ²(4) = 15,11, p = ,004; HR = 0,99, 95% CI [0,53; 1,82], p = ,967 (przeszczep); 103 osoby w 170 wierszach, 75 zdarzeń

Dla specjalistów

survival::coxph z Surv(start, stop, event), ties = "efron", test Walda i przedział Walda z qnorm(.975); kilka wierszy na osobę jest w porządku dla jednej kowariaty (covariate) zależnej od czasu bez odpornej wariancji (przedziały się nie nakładają). Przekształcenie działa w JavaScript i zgadza się wiersz po wierszu z survival::tmerge; model z winiety pakietu survival (Kalbfleisch i Prentice 1980, tabela 6.1, model 6) zgadza się co do ostatniej wydrukowanej cyfry.

library(survival)
m <- coxph(Surv(start, stop, event) ~ transplant + age + surgery + year, data = heart_long, ties = "efron")
summary(m)

Źródła

Therneau, T. M. & Grambsch, P. M. (2000). Modeling survival data: extending the Cox model. Springer. Kalbfleisch, J. D. & Prentice, R. L. (1980). The statistical analysis of failure time data. Wiley. Crowley, J. & Hu, M. (1977). Covariance analysis of heart transplant survival data. Journal of the American Statistical Association, 72, 27-36. Winieta pakietu survival „Using time dependent covariates and time dependent coefficients in the Cox model”.

Powiązane

Otwórz w Statable