【问题标题】:R draw multiple models in one plotR在一个图中绘制多个模型
【发布时间】:2014-05-06 22:08:54
【问题描述】:

我已经使用 kaplan-Meir 方法完成了多个生存模型,每个生存模型都是通过根据数据表中显示的组列将数据子集提取到不同的 R 数据表来构建的。我可以单独绘制每条生存曲线,但我想在一个图中绘制所有这些不同的模型。最好的方法是什么。

 userid        lifespan_days              event        group
2                    4657                    1           A
4                    4658                    1           A
16                   1106                    1           A
50                    458                    1           A
51                   4393                    1           A
57                    305                    1           A

在 ggplot 中执行此操作会很棒,通过搜索我发现关注 ggplot2 - plot multiple models on the same plot,但由于我的数据性质,我在执行此类场景时遇到问题。例如userid 来自多个网站,因此userid=2 可以存在于另一个组下。

假设使用上面的 data.table 我创建了以下内容:

a_time <- dt$lifespan_days
a_event <- dt$event
survival_model_a <- survfit(Surv(a_time, a_event) ~ 1)
plot(survival_model_a)

这只会在同一个图中绘制一个相似之处

【问题讨论】:

  • 我注意到你到底在绘制什么,也许你可以包含一些代码。如果您不使用 ggplot,则可以在后续绘图中调用 lines() 而不是 plot()。
  • @amoebe 我添加了一个示例只是为了说明清楚。
  • 如果您提供完整的数据集,或者至少提供包含多个组的大样本,我将向您展示一个 ggplot 解决方案(除非其他人先做......)。将您的数据上传到某处并在您的问题中发布链接。

标签: r ggplot2 survival-analysis


【解决方案1】:

您可以使用以下方法绘制所有模型,而无需子集:

dt <- read.table(header=T, text="userid        lifespan_days              event        group
2                    4657                    1           A
4                    4658                    0           A
16                   1106                    1           B
50                    458                    1           B
51                   4393                    1           C
57                    305                    1           A")

library(survival)
a_time <- dt$lifespan_days
a_event <- dt$event
survival_model_a <- survfit(Surv(a_time, a_event) ~ dt$group)
plot(survival_model_a, col = rainbow(length(unique(dt$group))))

【讨论】:

    【解决方案2】:

    使用lines() 进行后续的绘图调用,如下所示:

    b_time <- dtB$lifespan_days
    b_event <- dtB$event
    survival_model_b <- survfit(Surv(b_time, b_event) ~ 1)
    lines(survival_model_b)
    

    如果你想使用ggplot2,this question有两个很好的答案。

    【讨论】:

    • 这确实有效,将其转换为 ggplot 的最佳方法是什么?
    • 我添加了一些 ggplot 答案的链接,得到了很多人的支持,不幸的是我并不真正了解 ggplot。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2022-01-11
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多