如何从survfit函数提取累积发生率曲线的概率数据?
关于survival包多事件累积发生率曲线数据位置的问题
问题详情
我使用survival::survfit()绘制累积发生率曲线,参考官方vignette执行了以下代码:
library(survival) mgus2$etime <- with(mgus2, ifelse(pstat==0, futime, ptime)) event <- with(mgus2, ifelse(pstat==0, 2*death, 1)) mgus2$event <- factor(event, 0:2, labels=c("censor", "pcm", "death")) mfit2 <- survfit(Surv(etime, event) ~ sex, data=mgus2) plot(mfit2)
数据包含pcm和death两个事件,协变量sex分为male和female两个水平,绘图生成四条概率曲线。但我在mfit2中仅找到x轴数据mfit2$time,mfit2$pstate未包含pcm女性、pcm男性、death女性、death男性这四个概率。我已找到提取数据的变通方法,但想知道这些绘图用的概率数据藏在mfit2的哪个位置?
解答
在竞争风险模型的survfit结果中,绘图所需的四条累积发生率曲线数据,实际存储在mfit2$cumhaz矩阵中,需要结合分组和事件类型对应:
mfit2$strata会明确分组的时间点数量划分(比如sex=female和sex=male各自包含多少个时间点)mfit2$cumhaz的每一行对应一个时间点,每一列对应一种事件类型在对应分组下的累积发生率。你可以通过mfit2$states确认列对应的事件顺序(这里就是pcm、death),再结合strata的分组索引拆分,就能精准对应到四条曲线的数据。
举个直观的提取示例:
# 获取分组的时间点索引分界 strata_split <- c(0, cumsum(mfit2$strata)) # 提取女性组的pcm和death累积发生率 female_pcm <- mfit2$cumhaz[(strata_split[1]+1):strata_split[2], 1] female_death <- mfit2$cumhaz[(strata_split[1]+1):strata_split[2], 2] # 提取男性组的pcm和death累积发生率 male_pcm <- mfit2$cumhaz[(strata_split[2]+1):strata_split[3], 1] male_death <- mfit2$cumhaz[(strata_split[2]+1):strata_split[3], 2]
此外,直接运行summary(mfit2)也能查看每个时间点对应的各事件累积发生率,输出结果会按分组和事件类型清晰展示所有数值。
内容的提问来源于stack exchange,提问作者LulY
相关产品推荐
相关产品推荐

