R 包(或 SAS 代码)生成两条同时的 Kaplan-Meier 曲线?

机器算法验证 r sas 生存 卡普兰迈尔
2022-03-25 14:20:55

有一种方法可以对两个(或更多我认为的)相互排斥的竞争风险作为两条不同生存曲线的混合体进行生存分析。就像您在 AC Ghani 等人中看到的那样。一种新型、新兴传染病病死率的估计方法美国流行病学杂志(2005 年)卷。162,第 5 期

我正在寻找的是一个可以帮助产生类似这个数字的包:

在此处输入图像描述

其中一个结果的生存曲线和 1-另一个结果的生存曲线最终将在一个特定点相遇,该点是两种结果的混合。

3个回答

在 R 中,由survfit.object--- 返回的survfit()--- 存储拟合的生存曲线。特别是,该对象包含曲线具有阶跃的时间点和这些点的纵坐标。因此,您可以构建生存函数,小号^(),通过常数插值。这是我这样做的方式:

km <- summary(survfit(Surv(time, event) ~ 1, data=data))
S <- approxfun(km$time, km$surv,
               method="constant", f=0, yleft=1, rule=2)

现在,S可以用作 R 中的任何用户定义函数:特别是,您可以随时求值S(t)t可以使用 绘制绘图plot(),并且可以使用, ...在同一张图上叠加两条 KM 曲线lines()

希望这可以帮助!

您要求的是一个过程的生存函数和竞争过程的累积关联函数 (= 1- S(t)) 的同时图。'cmprsk' R 包应该能够绘制图表,但由于通常的模式是将两个过程都显示为累积发生率,因此您需要做一些工作来转换数据,以便一个是 S(t) 和另一个是 H(t)。

如果您可以使用 绘制两条曲线,岂不是足够好 par(new=T)

plot(survfit(KMfit1 ~ 1),main="Kaplan-Meier estimate with 95% confidence bounds",xlab="time", ylab="survival function",col="red",xlim=c(0,70))

par(new=T)

plot(survfit(KMfit2 ~ 1),col="green",xlim=c(0,70))

在此处输入图像描述