R рисовать несколько моделей на одном графике

Я сделал несколько моделей выживания, используя подход Каплана-Меира, каждая модель выживания была построена путем извлечения подмножества данных в другую таблицу данных 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 - построить несколько моделей на одном графике, но у меня проблемы с выполнением такого сценария из-за характера моих данных. Например, userid принадлежит нескольким веб-сайтам, поэтому userid=2 может существовать в другой группе.

Допустим, используя приведенную выше таблицу данных, я создал следующее:

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

это будет отображать только одно сходство на том же графике. Я хочу построить модель, которую я построил для данных группы b, которая находится в другом data.table / data.frame


person add-semi-colons    schedule 06.05.2014    source источник
comment
Я знаю, что именно вы планируете, возможно, вы можете включить какой-то код. Если вы не используете ggplot, вы можете просто вызвать lines() вместо plot() для последующих графиков.   -  person amoebe    schedule 07.05.2014
comment
@amoebe Я добавил пример, чтобы было понятно.   -  person add-semi-colons    schedule 07.05.2014
comment
Если вы предоставите свой полный набор данных или, по крайней мере, очень большую выборку, включающую несколько групп, я покажу вам решение ggplot (если кто-то другой не сделает это первым...). Загрузите свои данные куда-нибудь и разместите ссылку в своем вопросе.   -  person jlhoward    schedule 07.05.2014


Ответы (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))))
person FFI    schedule 07.05.2014

Используйте 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, есть два хороших ответа в этот вопрос.

person amoebe    schedule 06.05.2014
comment
Это на самом деле работает, как лучше всего преобразовать это в ggplot? - person add-semi-colons; 07.05.2014
comment
Я добавил ссылку на некоторые ответы ggplot с большим количеством голосов, к сожалению, я действительно не знаю ggplot. - person amoebe; 07.05.2014