生存函数 - R 中的插值
Survival function - interpolation in R
我构造了一个生存函数如:
[![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)]
我想,您正在使用 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
我构造了一个生存函数如:
[![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)]
我想,您正在使用 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