查看原文
其他

如何使用一行代码在一张图形上展示不同的模型

段湘杰 R语言统计与绘图 2023-08-08

在临床文章中,我们通常会构建多个模型,并且比较不同模型的系数差异。

今天来学习一个新的R包——ggstats包,包里有一个新的函数,可以使用这个函数来在一个图形上显示不同模型的系数差异。

1. 安装R包

install.packages("ggstats")
library(ggstats)
library(survival)
library(tidyverse)

2. 加载数据

使用colon 数据集进行演示。

# 查看数据集结构
glimpse(colon)

处理下数据。

mycolon <- colon %>%
  transmute(Time = time,
            Status = status,
            Age = age,
            Sex = factor(sex, levels = c(01), labels = c("Female""Male")),
            Obstruct = factor(obstruct, levels = c(01), labels = c("No""Yes")),
            Differ = factor(differ, levels = c(123),
                            labels = c("well""moderate""poor")),
            Extent = factor(extent, levels = c(1234),
                            labels = c("submucosa""muscle",
                                       "erosa""contiguous structures"))
  ) %>%
  na.omit()
glimpse(mycolon)

如上代码所示,我将colon 数据集中的部分变量转换了因子,并新建了一个数据集mycolon,下面使用mycolon 数据集进行演示。

3. 构建模型

先来拟合两个不同的逻辑回归模型。

# 模型1
fit1 <- glm(Status ~ Age + Sex + Obstruct + Differ + Extent,
            binomial(link = "logit"), data = mycolon)
fit1
# 模型2
fit2 <- glm(Status ~ Age + Sex + Obstruct + Differ,
            binomial(link = "logit"), data = mycolon)
fit2

4. 比较不同的模型

可以使用ggcoef_compare()函数来比较不同的模型。

models <- list(
  "Full model" = fit1,
  "Simp model" = fit2)

ggcoef_compare(models, exponentiate = TRUE)

同样这个R包支持ggplot2语法。

可以调整不同的参数来设置图形美化。

ggcoef_compare(models, exponentiate = TRUE,
               errorbar_height = 0.4, point_size = 2) +
  theme_bw() +
  theme(legend.position = c(0.850.60),
        legend.background = element_blank())

5. 使用分面图形来显示模型

ggcoef_compare(models, type = "faceted", exponentiate = TRUE,
               errorbar_height = 0.4, point_size = 2) +
  theme(legend.position = c(0.850.17),
        legend.background = element_blank())

如果要调整更多的参数,可以查看函数的帮助文档。

参考资料

  1. ggstats 包帮助文档

《完》


 关注下方公众号,分享更多更好玩的R语言知识

点个在看,SCI马上发表。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存