在临床文章中,我们通常会构建多个模型,并且比较不同模型的系数差异。
今天来学习一个新的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())
如果要调整更多的参数,可以查看函数的帮助文档。
参考资料
- ggstats 包帮助文档