0

我想在 Cox 生存模型之后创建一个森林图。但是,我只想在图中显示一些协变量?有人知道这是否可能吗?也许使用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)
4

1 回答 1

2

我机器上的当前版本ggforest不允许我选择要在图中显示的变量。但是,另一个包应该允许用户选择变量forestmodel::forest_modelcovariates =但是,当前版本的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"))

在此处输入图像描述

这可能是原始贡献者可以解决的问题。在某个阶段,我能够通过对以前版本的函数进行一些小的修改来生成类似的东西。但是,在我重新安装更新的软件包后,它不再起作用。

在此处输入图像描述

编辑

另一种方法是灵活的。它需要两个步骤。首先,收集模型信息(我broom::tidy在这里使用,但您可以使用其他方法。第二,用于forestplot::forest_plot生成图形。同样,您也可以使用其他 Meta 分析包。
让我们继续上面的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)

这将产生以下图表。生成令人满意的图表可能需要更多的学习,但相对而言,您可以控制。
在此处输入图像描述

于 2019-10-12T03:06:54.547 回答