创建一个在R中包含多个事件的时间到事件kaplan-meier图



我想创建一个kaplan-meier图。大多数教程都关注二元生存(死亡/生存(,但在我的情况下,我想画出一个事件的时间(在药物中切换1,2,3次(。这可能吗?

下面是一些示例数据来说明我的观点。

library (data.table)
data <- data.table( ID                   = c(1,1,2,3,4,5,6,6,7,7,7,8,9,10,11,11,11,12,12,13,14,14,14,15,15,16),
episode              = c(1,2,1,1,1,1,1,2,1,2,3,1,1,1,1,2,3,1,2,1,1,2,3,1,2,1), 
time_till_next_ep    = c(0,5,0,0,0,0,0,8,0,4,14,0,0,0,0,6,17,0,9,0,0,4,9,0,8,0))

首先,我们有一个指示参与者ID的变量。

然后我们有一个变量来指示药物episode。这意味着如果参与者在一定时间内服用某种类型的药物。大多数参与者只服用一次药物(第1次(,但也有一些参与者第二次(第2次(或第三次(第3次(再次服用药物。

发作之间的时间在time_till_next_ep变量中以天为单位计算。由于第一个病例的发作间隔没有时间,因此数据中有很多零。

我想创建一个Kaplan-Meier图:在x轴上是到下一集的时间,在y轴上是集数。随着患者每一次新发作的开始,图表就会下降一步。

我已经尝试过使用生存包来创建这个,但它似乎不起作用

library(survival)
S_input <- Surv(time = data[,as.numeric(time_till_next_ep)], event = data[,episode])

km_fit <- survfit(S_input ~ 1, 
data = data, 
type = "kaplan-meier")

km_fig <- ggsurvplot(km_fit, 
data,
tables.theme = theme_cleantable())

如果我检查输入的S_input数据,它似乎在我的时间数据旁边添加了问号

> S_input 
[1]  0   5?  0   0   0   0   0   8?  0   4? 14?  0   0   0   0   6? 17?  0   9?  0   0   4?  9?  0   8?  0 

摘要数据并不是真正的信息来源:

> summary(km_fit)
Call: survfit(formula = S_input ~ 1, data = data, type = "kaplan-meier")
10 observations deleted due to missingness 
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0     16      16        0     NaN           NA           NA

消息说,由于遗漏,10个观察结果被删除,这似乎是我在药物方面的10个转变。

最后,我在绘图时得到以下错误:Error in f(...) : Aesthetics can not vary with a ribbon

在我的情况下,我是否正确地使用了生存分析,或者这真的是为二进制数据保留的?

正如您所提到的,您的设置无法在"简单"生存模型中表示,在该模型中,受试者由于独特的原因而随着时间的推移死亡/退出,因为有重复发生的事件按顺序发生。我认为您的设置最好用多状态模型来表示,它允许您显式地对事件之间的转换进行建模,并考虑它们之间的时间交互。这里有一个很好的教程,你可以参考如何对重复事件进行建模。目前,我无法为您提供具体案例的工作示例,但补充材料中报告了一些代码和数据。

关于Kaplan Meier本身,我认为如果不报告其中一根轴上的"生存份额",你就无法绘制它。Kaplan-Meier图只有在全因死亡率研究中才是直接的。多状态模型使您可以使用其他工具,如转换概率,来绘制经历后续事件的风险。

相关内容

  • 没有找到相关文章

最新更新