Я пытаюсь создать графики выживания, используя пакет survminer в R, с данными, разделенными по генетическим мутациям, и включая сводную строку, представляющую всех людей по всем аспектам. Анализ выживаемости и построение графиков работают нормально, если не использовать add.all в ggsurvplot для нескольких групп (с разделением по полу и типу мутации). Однако при попытке добавить комбинированную кривую выживания по фасетам с помощью add.all = TRUE она отображается не так, как ожидалось. Ниже приведен минимальный воспроизводимый пример с использованием набора данных о легких:
пример:
library(survival) ; library(survminer)
set.seed(102030)
lung <- lung %>% mutate( mut = sample(c("mutA","mutB"), nrow(lung), replace = T, prob = c(0.5,0.5))) # create 2 groups for demo
# Basic survival curves
fit1 <- survfit(Surv(time, status) ~ 1 , data = lung) # general overall survival
ggsurvplot(fit1 , data = lung)
# Basic survival curves with 2 groups for sex
fit2 <- survfit(Surv(time, status) ~ sex , data = lung)
ggsurvplot(fit2 , data = lung)
# Survival curves with 2 variables and 2 groups per variable (problematic part)
fit3 <- survfit(Surv(time, status) ~ sex + mut, data = lung)
ggsurvplot(fit3 , data = lung, facet.by = "mut") # example one facet by mut. Works as intended!
ggsurvplot(fit3 , data = lung,
facet.by = "mut",
add.all = T) # supposedly should have added a third groups (i.e. a line that represents the number of individuals in each facet)
# I also tried this approach, but this is not faceting the plot either.
ggsurvplot_combine(
list(fit1, fit3),
list(lung, lung),
facet.by = "mut",
pval = TRUE,
risk.table = TRUE,
conf.int = F,
palette = "jco"
)
Я ожидаю, что параметр add.all = TRUE добавит сводную кривую по граням, но этого не происходит. Как я могу исправить эту проблему или есть ограничения в функции?
Возможно, мне нужно использовать ggsurvplot_group_by
или ggsurvplot_facet
по-другому.
Поскольку фасетирование (или группировка) и добавление общей группы (add.all=TRUE) не реализовано в survminer (пока), вы можете построить кривые отдельно, а затем использовать arrange_ggsurvplots
, чтобы объединить их.
pA <- ggsurvplot(fit3, title = "Mutant A",
add.all=TRUE,
data = subset(lung, subset=mut= = "mutA")); pA
pB <- ggsurvplot(fit3, add.all=TRUE, title = "Mutant B",
data = subset(lung, subset=mut= = "mutB"))
pAB <- arrange_ggsurvplots(list(pA, pB))
ggsave("pAB.png", pAB, width=10, height=5)
Спасибо за ответ, помогло! И вы правы, мне следует опубликовать это на Github, но я увидел много открытых вопросов на странице Github, на которые нет ответа! Пытаясь, я также наткнулся на пакет ggsurvfit, который кажется более оптимизированным. Это работает хорошо, но удаляет таблицу рисков из графика, когда я объединяю 2 графика, используя ggarrange(pA, pB) или стиль лоскутного шитья pA + pB.
Примеры объединения графиков ggsurvfit с сайта: danieldsjoberg.com/ggsurvfit/articles/gallery.html#side-by-side
Текущая версия survminer не позволяет выполнять фасетирование и добавление общей группы. Предложите вам опубликовать запрос на добавление функции или отчет об ошибке на странице github.com/kassambara/survminer/issues