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

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

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

今天来学习一个新的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(0, 1), labels = c("Female", "Male")),
            Obstruct = factor(obstruct, levels = c(0, 1), labels = c("No", "Yes")),
            Differ = factor(differ, levels = c(1, 2, 3),
                            labels = c("well", "moderate", "poor")),
            Extent = factor(extent, levels = c(1, 2, 3, 4),
                            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.85, 0.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.85, 0.17),
        legend.background = element_blank())

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

参考资料

  1. ggstats 包帮助文档
目录
相关文章
|
1月前
|
网络协议 Java
【工具】Mermaid + 大模型画流程图
最近看面试文章关于TCP三次握手和四次挥手的文章,时常会看到有类似的图去描述这样的过程。当然觉得这样的图还是蛮规范的,属于流程图的一种,是否有工具可以自动生成呢?但没有细想,昨天刷V2EX看到也有老哥发出了这样的问题。于是顺着评论区大佬的回答,我GET到了一个工具Mermaid 这里三次握手的图取自小林coding的文章
179 0
|
1月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
68 1
|
11月前
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
179 0
|
1月前
|
自然语言处理 数据可视化
【词云图绘制实战】——数据准备、清洗、多形式展示
【词云图绘制实战】——数据准备、清洗、多形式展示
|
1月前
|
数据可视化
R语言动态图可视化:如何、创建具有精美动画的图
R语言动态图可视化:如何、创建具有精美动画的图
|
1月前
|
数据可视化
R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画
R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画
|
1月前
|
机器学习/深度学习 数据可视化 算法
神经网络模型结构框架可视化的在线与软件绘图方法
神经网络模型结构框架可视化的在线与软件绘图方法
156 1
|
1月前
|
存储 JSON 程序员
C#实现数据导出任一Word图表的通用呈现方法及一些体会
C#实现数据导出任一Word图表的通用呈现方法及一些体会
|
11月前
|
存储 监控 机器人
JavaRobot如何实现屏幕截图
屏幕截图是日常开发中常见且重要的功能之一,而JavaRobot提供了一种简便且高效的方式来实现屏幕截图。本文将介绍JavaRobot如何实现屏幕截图的步骤和方法。
206 0
|
Python
matplotlib绘制雷达图之基本配置——万能模板案例
matplotlib绘制雷达图之基本配置——万能模板案例
858 0
matplotlib绘制雷达图之基本配置——万能模板案例