其他
如何使用一行代码在一张图形上展示不同的模型
在临床文章中,我们通常会构建多个模型,并且比较不同模型的系数差异。
今天来学习一个新的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 包帮助文档
《完》
关注下方公众号,分享更多更好玩的R语言知识。
点个在看,SCI马上发表。