Czy ktoś może mi wyjaśnić mój model Coxa zwykłym angielskim?
Dopasowałem następujący model regresji Coxa do wszystkich moich danych za pomocą tej cph
funkcji. Moje dane są zapisywane w obiekcie o nazwie Data
. Zmienne w
, x
i y
są ciągłe; z
jest czynnikiem dwóch poziomów. Czas mierzony jest w miesiącach. Niektórym moim pacjentom brakuje danych dla zmiennej z
( NB : Należycie zwróciłem uwagę na sugestię dr Harrella, poniżej, że przypisuję te wartości, aby uniknąć odchylania mojego modelu i zrobię to w przyszłości).
> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)
Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event) w x y z
0 0 0 0 14
Model Tests Discrimination
Indexes
Obs 152 LR chi2 8.33 R2 0.054
Events 64 d.f. 4 g 0.437
Center 0.7261 Pr(> chi2) 0.0803 gr 1.548
Score chi2 8.07
Pr(> chi2) 0.0891
Coef S.E. Wald Z Pr(>|Z|)
w -0.0133 0.0503 -0.26 0.7914
x -0.0388 0.0351 -1.11 0.2679
y -0.0363 0.0491 -0.74 0.4600
z=1 0.3208 0.2540 1.26 0.2067
Próbowałem również przetestować założenie o proporcjonalnych zagrożeniach, używając cox.zph
poniższego polecenia, ale nie wiem, jak interpretować jego wyniki. Wprowadzenie plot()
polecenia powoduje wyświetlenie komunikatu o błędzie.
cox.zph(fit, transform="km", global=TRUE)
rho chisq p
w -0.1125 1.312 0.2520
x 0.0402 0.179 0.6725
y 0.2349 4.527 0.0334
z=1 0.0906 0.512 0.4742
GLOBAL NA 5.558 0.2347
Pierwszy problem
- Czy ktoś może mi wyjaśnić wyniki powyższej pracy zwykłym angielskim? Mam wykształcenie medyczne i nie mam formalnego szkolenia w zakresie statystyki.
Drugi problem
Jak sugeruje dr Harrell, chciałbym wewnętrznie zweryfikować mój model, wykonując 100 iteracji 10-krotnej walidacji krzyżowej przy użyciu
rms
pakietu (z tego, co rozumiem, wymagałoby to zbudowania100 * 10 = 1000
różnych modeli, a następnie poproszenia ich o przewidzenie czasów przeżycia pacjentów, których nigdy nie widzieli).Próbowałem użyć
validate
funkcji, jak pokazano.> v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T) > v1 index.orig training test optimism index.corrected n Dxy -0.2542 -0.2578 -0.1356 -0.1223 -0.1320 10 R2 0.0543 0.0565 0.1372 -0.0806 0.1350 10 Slope 1.0000 1.0000 0.9107 0.0893 0.9107 10 D 0.0122 0.0128 0.0404 -0.0276 0.0397 10 U -0.0033 -0.0038 0.0873 -0.0911 0.0878 10 Q 0.0155 0.0166 -0.0470 0.0636 -0.0481 10 g 0.4369 0.4424 0.6754 -0.2331 0.6700 10
Jak przeprowadzasz próbkowanie 100x? Myślę, że mój powyższy kod przeprowadza weryfikację krzyżową tylko raz.
Chciałem wtedy dowiedzieć się, jak dobry był mój model w przewidywaniu. Próbowałem następujące:
> c_index <- abs(v1[1,5])/2 + 0.5 > c_index [1] 0.565984
Czy to oznacza, że mój model jest tylko nieznacznie lepszy od rzutu monetą?
Trzeci problem
Dr Harrell zwraca uwagę, że przyjąłem liniowość efektów towarzyszących oraz że liczba zdarzeń w mojej próbce jest zaledwie na tyle duża, że pasuje do wiarygodnego modelu, jeśli wszystkie efekty towarzyszące będą liniowe.
- Czy to oznacza, że powinienem uwzględnić w moim modelu jakieś pojęcie interakcji? Jeśli tak, jakieś porady dotyczące tego, co umieścić?
cph
wyniki zwykłym angielskim lub wskazałby mi referencję, która by to zrobiła. Dr Harrell, bardzo dziękuję za pomoc do tej pory!