R中的生存分析-将Kaplan Meier图转换为X =连续变量,Y = P(生存),彩色线=选定时间点

jq6vz3qz  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(136)

为了直观地显示样本中生存几率的连续预测因子的分布,我希望按照我的标题中所描述的那样转换K-M图。
我牺牲了生存率的总体时间分布的可视化,但是使用颜色并在y轴上保持P(生存率),我可以很容易地绘制1年,5年生存率等。
注意我不是在寻找考克斯可视化。我感兴趣的是来自K-M函数的数据,即:

km <- survfit(Surv(time, censor) ~ continuous.predictor, data = df)
ggsurvplot(km)

字符串
但是x轴作为连续预测值,并且用选定的时间点着色的线。理论上,这应该只是使分解的时间成为stratacontinuous.predictor成为新的x值的问题。
我在survival包中使用了survfit(),在survminer中使用了ggsurvplot(),但不清楚它们是否支持这样的转换。

7z5jn7bk

7z5jn7bk1#

您可以在模型上使用predict函数,提供连续变量的值和希望测量生存概率的时间。
让我们使用survival包中的lung示例,其中age作为感兴趣的连续变量:

library(survival)

model <- coxph(Surv(time, status) ~ age, data = lung)

字符串
现在,我们创建一个30 - 80岁的所有年龄段的数据框架,随访时间为6个月、1年和5年:

newdata <- expand.grid(age = 30:80, time = c(182, 365, 5*365), status = 1)


我们可以将其馈送到predict并获得生存概率,95%置信区间:

preds <- predict(model, newdata = newdata, type = 'expected', se.fit = TRUE)

newdata$pred <- exp(-preds$fit)
newdata$upper <- exp(-(preds$fit + 1.96 * preds$se.fit))
newdata$lower <- exp(-(preds$fit - 1.96 * preds$se.fit))


现在我们可以使用vanilla ggplot来绘制:

library(ggplot2)

ggplot(newdata, aes(age, pred, color = factor(time))) +
  geom_ribbon(aes(ymax = upper, ymin = lower, fill = factor(time)),
              alpha = 0.2, color = NA) +
  geom_line() +
  scale_fill_discrete('Time', labels = c('6 months', '1 year', '5 years')) +
  scale_color_discrete('Time', labels = c('6 months', '1 year', '5 years')) +
  scale_y_continuous('Survival probability', labels = scales::percent) +
  theme_minimal() +
  ggtitle(paste('Survival Probability according to age',
                'at 6 months, 1 year, 5 years'))


x1c 0d1x的数据

bxjv4tth

bxjv4tth2#

我最近发表了一篇关于这个主题的文章,名为“可视化连续变量对时间事件结果的(因果)影响”(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10392888/)。它描述了多种不同的方法来可视化连续变量对生存概率的影响。例如,这是生存面积图:


的数据
您可以使用contsurvplot R程序包创建此图和其他类似的图,该程序包位于CRAN上:https://robindenz1.github.io/contsurvplot/
如果你想在x轴上显示连续变量,在y轴上显示生存概率,并在某些特定时间点上显示彩色线,你可以使用plot_surv_at_t函数。在这种情况下,与Allan卡梅隆给出的答案唯一的区别是,它允许你在考克斯模型中包括调整变量。

相关问题