2015-03-31 6 views
1

Я стараюсь соответствовать параметрической модели выживания. Думаю, мне удалось это сделать. Тем не менее, я не мог добиться успеха при расчете вероятностей выживания:Как вычислить вероятности выживания в R?

library(survival) 
zaman <- c(65,156,100,134,16,108,121,4,39,143,56,26,22,1,1,5,65, 
56,65,17,7,16,22,3,4,2,3,8,4,3,30,4,43) 
test <- c(rep(1,17),rep(0,16)) 
WBC <- c(2.3,0.75,4.3,2.6,6,10.5,10,17,5.4,7,9.4,32,35,100, 
100,52,100,4.4,3,4,1.5,9,5.3,10,19,27,28,31,26,21,79,100,100) 
status <- c(rep(1,33)) 
data <- data.frame(zaman,test,WBC) 

surv3 <- Surv(zaman[test==1], status[test==1]) 
fit3 <- survreg(surv3 ~ log(WBC[test==1]),dist="w") 

С другой стороны, никаких проблем вообще при расчете вероятности выживания с помощью Каплана-Мейера Оценивание:

fit2 <- survfit(Surv(zaman[test==0], status[test==0]) ~ 1) 
summary(fit2)$surv 

Любая идея, почему ?

+0

Я не понимаю, в чем проблема в первом 'fit3'. Чем отличается то, что вы ожидаете? –

+0

@DavidRobinson извините. Я написал тот же код дважды. Исправлено это –

+0

Итак, проблема в том, что вы не знаете, как извлечь вероятности выживания из объекта 'fit3'? –

ответ

0

Вы можете получить предсказанные вероятности из survreg объекта с predict:

predict(fit3) 

Если вы заинтересованы в объединении этого с исходными данными, а также в остаточных и стандартных ошибках предсказания, вы можно использовать функцию augment в моем broom пакете:

library(broom) 
augment(fit3) 

полный анализ может выглядеть примерно так:

library(survival) 
library(broom) 
data <- data.frame(zaman, test, WBC, status) 
subdata <- data[data$test == 1, ] 

fit3 <- survreg(Surv(zaman, status) ~ log(WBC), subdata, dist="w") 
augment(fit3, subdata) 

С выходом:

zaman test WBC status .fitted .se.fit  .resid 
1  65 1 2.30  1 115.46728 43.913188 -50.467281 
2 156 1 0.75  1 197.05852 108.389586 -41.058516 
3 100 1 4.30  1 85.67236 26.043277 14.327641 
4 134 1 2.60  1 108.90836 39.624106 25.091636 
5  16 1 6.00  1 73.08498 20.029707 -57.084979 
6 108 1 10.50  1 55.96298 13.989099 52.037022 
7 121 1 10.00  1 57.28065 14.350609 63.719348 
8  4 1 17.00  1 44.47189 11.607368 -40.471888 
9  39 1 5.40  1 76.85181 21.708514 -37.851810 
10 143 1 7.00  1 67.90395 17.911170 75.096054 
11 56 1 9.40  1 58.99643 14.848751 -2.996434 
12 26 1 32.00  1 32.88935 10.333303 -6.889346 
13 22 1 35.00  1 31.51314 10.219871 -9.513136 
14  1 1 100.00  1 19.09922 8.963022 -18.099216 
15  1 1 100.00  1 19.09922 8.963022 -18.099216 
16  5 1 52.00  1 26.09034 9.763728 -21.090343 
17 65 1 100.00  1 19.09922 8.963022 45.900784 

В этом случае .fitted столбец предсказанные вероятности.

+0

Итак, мы ожидаем, что пациент №1 проживет более 115 недель? Кроме того, как я могу построить log (log (-S (y))) для log (zaman) для fit3? –

+0

a) Основываясь исключительно на WBC и установленном соотношении, предполагается, что 115 - ожидаемое значение. b) Почему «log (log (-S (y))» и что такое 'S (y)'? –