Як інтерпретувати вихід прогнозу.coxph?


17

Після встановлення коксмоделі можна зробити прогнози та отримати відносний ризик нових даних. Що я не розумію - це як обчислюється відносний ризик для окремої людини і який він відносний (тобто середній показник чисельності населення)? Якісь рекомендації щодо ресурсів, які допоможуть зрозуміти (я не дуже просунувся в аналізі виживання, тим чим простіше, тим краще)?

Відповіді:


32

predict.coxph()обчислює коефіцієнт небезпеки щодо середньої вибірки для всіх змінних прогнозів. Фактори перетворюються на манекени передбачувачів, як правило, середнє значення яких можна обчислити. Нагадаємо, що модель Cox PH є лінійною моделлю для небезпеки для ln h ( t ) :plnh(t)

lnh(t)=lnh0(t)+β1X1++βpXp=lnh0(t)+Xβ

Де - невизначена базова небезпека. Рівно, небезпеку h ( t ) моделюють як h ( t ) = h 0 ( t ) e β 1 X 1 + + β p X p = h 0 ( t ) e X β . Співвідношення ризику між двома людьми я і я ' зі значеннями предиктораh0(t)h(t)h(t)=h0(t)eβ1X1++βpXp=h0(t)eXβii і X i ' не залежать від базової небезпеки і не залежать від часуt:XiXit

hi(t)hi(t)=h0(t)eXiβh0(t)eXiβ=eXiβeXiβ

Для розрахункового коефіцієнта небезпеки між людьми та i ми просто підключаємо оцінки коефіцієнтів b 1 , , b p для β 1 , , β p , даючи e X i b та e X i b .iib1,,bpβ1,,βpeXibeXib

Як приклад у роботі R, я використовую дані з додатка Джона Фокса про модель Cox-PH, який дає дуже приємний вступний текст. Спочатку ми отримуємо ці дані та будуємо просту модель Cox-PH для часу арешту звільнених ув'язнених ( fin: фактор - отримана фінансова допомога з фіктивним кодуванням "no"-> 0, "yes"-> 1 age,: вік на момент звільнення, prio: кількість попередніх судимостей):

> URL   <- "http://socserv.mcmaster.ca/jfox/Books/Companion/data/Rossi.txt"
> Rossi <- read.table(URL, header=TRUE)                  # our data
> Rossi[1:3, c("week", "arrest", "fin", "age", "prio")]  # looks like this
  week arrest fin age prio
1   20      1  no  27    3
2   17      1  no  18    8
3   25      1  no  19   13

> library(survival)                                      # for coxph()    
> fitCPH <- coxph(Surv(week, arrest) ~ fin + age + prio, data=Rossi)    # Cox-PH model
> (coefCPH <- coef(fitCPH))                              # estimated coefficients
     finyes         age        prio 
-0.34695446 -0.06710533  0.09689320 

Тепер ми підключаємо вибіркові середні значення для наших прогнозів у формулу :eXb

meanFin  <- mean(as.numeric(Rossi$fin) - 1)   # average of financial aid dummy
    meanAge  <- mean(Rossi$age)                   # average age
meanPrio <- mean(Rossi$prio)                  # average number of prior convictions
rMean <- exp(coefCPH["finyes"]*meanFin        # e^Xb
           + coefCPH["age"]   *meanAge
           + coefCPH["prio"]  *meanPrio)

Тепер ми підключаємо до прогнозованих значень перших 4 осіб формулу .eXb

r1234 <- exp(coefCPH["finyes"]*(as.numeric(Rossi[1:4, "fin"])-1)
           + coefCPH["age"]   *Rossi[1:4, "age"]
           + coefCPH["prio"]  *Rossi[1:4, "prio"])

Тепер обчисліть відносний ризик для перших чотирьох осіб порівняно із середнім рівнем вибірки та порівняйте їх із результатами predict.coxph().

> r1234 / rMean
[1] 1.0139038 3.0108488 4.5703176 0.7722002

> relRisk <- predict(fitCPH, Rossi, type="risk")   # relative risk
> relRisk[1:4]
        1         2         3         4 
1.0139038 3.0108488 4.5703176 0.7722002

Якщо у вас є стратифікована модель, порівняння в порівнянні predict.coxph()зі стратовими середніми, це можна контролювати за допомогою referenceпараметра, який пояснюється на сторінці довідки.


2
+1, оскільки не очевидно отримати те, що саме predict.coxph робить на сторінці довідки!
окрам

це було чудово! Дуже просто зрозуміти!
user4673

meanFin <- mean(as.numeric(Rossi$fin) - 1)не має великого сенсу, оскільки finкатегоричний. Чи не потрібно modeFin <- get_Mode(Rossi$fin)в цьому випадку?
Жубарб

1
@Zhubarb finє двійковим, тому числове представлення фактора просто має значення 1 і 2. Віднімання 1 дає нам кодовану змінну зі значеннями 0 і 1, яка також відображається в проектній матриці. Зауважте, що це не працюватиме для факторів, що мають більше ніж 2 рівні. Безумовно, дискусійним є те, чи має усереднення фіктивних змінних сенс, але саме predict.coxph()це і є.
каракал

Словом, як би ви інтерпретували коефіцієнт небезпеки 3,01 (наприклад, relRisk [2])?
РНБ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.