2016-06-10 5 views
1

Я пытаюсь добавить «общую» кривую выживаемости к кривой выживания, генерируемой для данного ковариата. кривой генерировать с помощью выживания и ggsurv (GGally) в R.Добавить общую кривую выживаемости на график кривой выживания для ковариата

Я воссоздать сценарий, используя набор данных двоеточия в пакете выживания в R.

# Load the dataset 
    library (survival) 
    library(GGally) 
    data(colon) 

    # This generates the overall survival curve (without covariates): 
    kms_avg <- survfit(Surv(time, status)~1, data =colon) 
    g_avg <- ggsurv(kms_avg, surv.col="red", xlab="Time (days)", lty.ci=0) 
    g_avg 



    # This generates the survival curve for covariate 'rx' 
    table(colon$rx) 
    kms_rx <- survfit(Surv(time, status)~rx, data =colon) 
    g_rx <- ggsurv(kms_rx, surv.col="red", xlab="Time (days)", lty.ci=0) 
    g_rx 

Теперь мне нужно добавить общую линию выживания к plot g_rx. g_rx, g_avg - объекты ggplot2.

# Extract the time, surv values (x,y axis values) from g_avg object 
s_avg <- summary(kms_avg) 
s_time <- s_avg$time 
s_surv <- s_avg$surv 
s <- data.frame(time=s_time, surv = s_surv) 

Теперь я пытаюсь добавить строку в объект g_rx.

g <- g_rx + geom_point() + geom_point(data=s, color="black") 
g 
Error in eval(expr, envir, enclos) : object 'group' not found 

Помогите оценить!

+0

нужно назначить й и у роли для новых данных. Обычно требуется aes(). –

ответ

1

Один из способов - построить все необходимые вам предметы вручную. Это дает вам большую силу. Но помните, что с великой силой приходит большая ответственность. Вот что я сделал. Я объединил установленные значения для средней модели с моделью, где выживание моделируется против rx. Я немного поиграл с цветами, чтобы сделать среднюю модель черной. Не стесняйтесь играть с цветами, типами линий, размеров ...

library (survival) 
library(GGally) 
library(ggplot2) 
data(colon) 

# This generates the overall survival curve (without covariates): 
kms_avg <- survfit(Surv(time, status)~1, data =colon) 
g_avg <- ggsurv(kms_avg, surv.col="red", xlab="Time (days)", lty.ci=0) 

# This generates the survival curve for covariate 'rx' 
kms_rx <- survfit(Surv(time, status)~rx, data =colon) 
g_rx <- ggsurv(kms_rx, surv.col="red", xlab="Time (days)", lty.ci=0) 

s_avg <- summary(kms_avg) 
s_rx <- summary(kms_rx) 

s <- data.frame(time = s_avg$time, surv = s_avg$surv, strata = "average") 
s_rx <- data.frame(time = s_rx$time, surv = s_rx$surv, strata = s_rx$strata) 

xy <- rbind(s, s_rx) 

ggplot(xy, aes(x = time, y = surv, color = strata)) + 
    theme_bw() + 
    geom_point() + 
    geom_line() 

ggplot(xy, aes(x = time, y = surv, color = strata)) + 
    theme_bw() + 
    geom_point(size = 0.5) + 
    geom_line() + 
    scale_color_manual(values = c("black", "#e41a1c", "#377eb8", "#4daf4a")) 

enter image description here

Или, вы можете вручную определить группировку.

g_rx + geom_point(data=s, aes(group = 1), color="black") 

enter image description here