R在一个图中绘制多个模型

时间:2014-05-06 22:08:55

标签: r ggplot2 survival-analysis

我使用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)

这只会在同一个图中绘制一个相似的图我想绘制我为不同的data.table / data.frame

组成的b组数据的模型

2 个答案:

答案 0 :(得分: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中有两个好的答案。

答案 1 :(得分:2)

您可以使用以下方法将所有模型合二为一,而无需使用子集:

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))))