ggforest (Surviner) только выбранные ковариаты - PullRequest
0 голосов
/ 11 октября 2019

Я хотел бы создать лесной участок после моделей выживания Кокса. Тем не менее, я хотел бы отображать только некоторые из ковариат на графике? Кто-нибудь знает, возможно ли это? Может быть, с помощью ggforest2? Спасибо

library(survival)
library(survminer)

model <- coxph(Surv(time, status) ~ sex + rx + adhere,
               data = colon )
ggforest(model)

colon <- within(colon, {
  sex <- factor(sex, labels = c("female", "male"))
  differ <- factor(differ, labels = c("well", "moderate", "poor"))
  extent <- factor(extent, labels = c("submuc.", "muscle", "serosa", "contig."))
})
bigmodel <-
  coxph(Surv(time, status) ~ sex + rx + adhere + differ + extent + node4,
        data = colon )
ggforest(bigmodel)

1 Ответ

0 голосов
/ 12 октября 2019

Текущая версия ggforest на моем компьютере не позволяет мне выбирать переменные, которые будут представлены на графике. Однако другой пакет forestmodel::forest_model имеет covariates =, который должен позволять пользователям выбирать переменные. Однако текущая версия forestmodel может выполнить это неправильно, как вы можете видеть на следующем графике:

colon <- within(colon, {
  sex <- factor(sex, labels = c("female", "male"))
  differ <- factor(differ, labels = c("well", "moderate", "poor"))
  extent <- factor(extent, labels = c("submuc.", "muscle", "serosa", "contig."))
})
bigmodel <-
  coxph(Surv(time, status) ~ sex + rx + adhere + differ + extent + node4,
        data = colon )
forest_model(bigmodel, covariates = c("sex", "rx"))

enter image description here

Возможно,быть оригинальным автором. На каком-то этапе я смог сгенерировать что-то подобное с небольшой модификацией предыдущей версии функции. Однако после переустановки обновленного пакета он больше не работает.

enter image description here

РЕДАКТИРОВАТЬ

Другой подход был бы гибким. Это занимает два шага. Во-первых, соберите информацию о модели (я использую broom::tidy здесь, но вы можете использовать другие методы. Во-вторых, используйте forestplot::forest_plot для создания графика. Опять же, вы также можете использовать другой пакет мета-анализа для этого.
Давайте продолжим свыше bigmodel

library(forestplot)
library(tidyverse)
# Save model information
df <- broom::tidy(bigmodel,  exponentiate = TRUE)
# pick up the first 4 values 
df1 <- df[1:4, ] %>% 
  transmute( 
    HR = round(estimate, 2), 
    low = conf.low, 
    high = conf.high)

row_names <- cbind(c("Name", "Sex", "Lev", "Lev + 5FU", "adhere"),
                   c("HR", df1$HR))
df1 <- rbind(rep(NA, 4), df1)
forestplot(labeltext = row_names,
           df1[,c("HR", "low", "high")],
           is.summary=c(FALSE, FALSE, FALSE),
           zero      = 1,
           xlog      = TRUE)

Это дает следующий график. Для создания удовлетворительного графика может потребоваться немного больше обучения, но вы относительно контролируете.
enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...