1

我构建了一个生存函数,例如:

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

在此处输入图像描述

现在我想确定 40% 的患者是什么时候感染的?这怎么能用R写?要么作为一个命令,给我一个数值作为结果,要么直接绘制到生存函数图中。

我知道生存函数描述了没有感染的概率,因此我可以从图中读取 0.6 的生存概率对应于 ca。45天?我如何将其绘制到图表中?

我试过(没有运气):

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

1 回答 1

2

我想,你正在使用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
于 2018-06-05T18:59:02.927 回答