Ошибка в `levels<-` (`* tmp*`, значение = как.символ (уровни)): уровень фактора [3] дублируется

#r #ggplot2 #survival #ggfortify #autoplot

#r #ggplot2 #Выживание #ggfortify #автозапуск

Вопрос:

Я пытаюсь построить фасетные кривые выживания с помощью автозапуска, но комбинация ковариат и их фасетирование дублируют уровни внутри факторов

 library(survival)
library(ggfortify)
fit <- survfit( Surv(time, status) ~ inst   sex,
                 data = lung )

autoplot(fit, facets = TRUE)


Error in `levels<-`(`*tmp*`, value = as.character(levels)) : 
  factor level [3] is duplicated
 

Кто-нибудь успешно построил фасетные кривые выживания с помощью автозапуска? Я попробовал survminer, но график выглядит ужасно, поскольку ковариаты занимают большую часть области графика.

Комментарии:

1. Я не думаю, что функция поддерживает такое поведение. Это могло бы помочь, если бы вы могли описать, как вы ожидаете, что это будет выглядеть. Вы хотите увидеть кривую выживаемости для каждого учреждения на уровне каждого пола?

Ответ №1:

Я думаю, вам следует еще раз взглянуть на ggsurvplot , поскольку autoplot.survfit , похоже, не нравится иметь более одной независимой факторной переменной (независимо от того, фасетируете вы или нет).

ggsurvplot Функция возвращает объект ggplot, поэтому вам не нужно соглашаться на параметры по умолчанию. Вы можете добавлять шкалы и стили по своему усмотрению. Чтобы взять ваш пример, мы могли бы сделать:

 library(survival)
library(ggfortify)
library(survminer)

fit <- survfit( Surv(time, status) ~ inst   sex,
                 data = lung )

p <- ggsurvplot(fit, facet.by = "inst", conf.int = TRUE)   
  theme(strip.background = element_blank(),
        axis.line.x = element_line())

p$facet <- facet_wrap(.~inst, ncol = 3, nrow = 6, scales = "free")

p
 

введите описание изображения здесь