【发布时间】:2021-09-27 03:42:10
【问题描述】:
我想创建一个卡普兰迈耶图。大多数教程都关注二元生存(死亡/生存),但就我而言,我想绘制事件的时间(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 次(第 3 集)。
剧集之间的时间在time_till_next_ep 变量中以天为单位计算。由于第一种情况的情节之间没有时间,因此数据中有很多零。
我想创建一个 Kaplan-Meier-Graph:在 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
在我的案例中,我是否正确地使用了生存分析,或者这真的是为二进制数据保留的?
【问题讨论】:
标签: r plot survival-analysis survival