Функция выживания - интерполяция в R - PullRequest
0 голосов
/ 04 июня 2018

Я построил функцию выживания, такую ​​как:

  [![plot(survfit(Surv(inf.time,infection)~1),xlab="Time (days)",ylab="Survival Probability",
                        main="Time Until Staphylococcus Infection",
                        conf.int = F)][1]][1]

enter image description here

Теперь я хотел бы определить, к какому времени имеет 40% оту пациентов была инфекция? Как это можно записать в R? Либо в качестве команды, которая дает мне числовое значение в качестве результата, либо непосредственно в графике функции выживания.

Мне известно, что функция выживания отображает вероятность отсутствия инфекции, поэтому я могу прочитать из графика, что вероятность выживания 0,6 соответствует ок.45 дней?Как я могу построить это на графике?

Я пытался (без удачи):

inf.time[which(survfit(Surv(inf.time,infection)~1) == 0.6)]

1 Ответ

0 голосов
/ 05 июня 2018

Полагаю, вы используете пакет survival, верно?Таким образом, вы можете получить фрейм данных всех точек кривой выживания от "survfit" объекта или, легко, от "summary.survfit, потому что это тип list под капотом.Затем вы можете отфильтровать df по вероятности выживания.Пример:

library(survival)

s <- Surv(lung$time, lung$status)

sfit <- survfit(s~1)  #get usual "survfit" object

summary_sfit = summary(sfit)

surv_df = data.frame(summary_sfit[2:6])  #somehow coerce it to data.frame

head(surv_df)

##    time n.risk n.event n.censor      surv
##  1    5    228       1        0 0.9956140
##  2   11    227       3        0 0.9824561


surv_df[max(which(surv_df$surv > 0.60)), ] 
##     time n.risk n.event n.censor      surv
##  68  245    117       1        2 0.6018576

Или вы можете просто установить подмножество survfit$time, не создавая фрейм данных

sfit$time[max(which(sfit$surv > 0.6))]

## [1] 245
...