其他
ggstats包,基于ggplot2语法绘制森林图
今天来学习一个新的R包——ggstats包。
这个R包是ggplot2的扩展包,使用这个R包可以快速回归模型的系数结果,也就是可以使用这个R包来绘制森林图。
绘制森林图图形如下:
下面来学习下这个R包。
1. 安装和加载R包
安装R 包可以直接从CRAN 上安装。
install.packages("ggstats")
library(ggstats)
library(survival) # 加载数据
library(dplyr) # 处理数据需要
2. 加载数据
使用colon 数据集进行演示。
data(colon) # 加载数据集
str(colon) # 查看数据集结构
查看数据集介绍,可以知道有些变量是分类变量,但是加载进来的数据集变量还是数字型,我们处理一下。
data(colon) # 加载数据集
mycolon <- colon %>%
transmute(time,
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"))
)
如上代码所示,我将colon 数据集中的部分变量转换了因子,并新建了一个数据集mycolon,下面使用mycolon 数据集进行演示。
3. 拟合模型
我们拟合逻辑回归模型。
fit.cox <- glm(status ~ Age + Sex + Obstruct + Differ + Extent,
binomial(link="logit"), data = mycolon)
然后查看回归模型的结果。
summary(fit.cox)
4. 回归模型可视化
可以使用ggstats包的ggcoef_model()函数来可视化回归模型的系数。
ggcoef_model(fit.cox)
如上所示,横坐标为系数值,纵坐标为各变量及分类水平。
可以使用exponentiate参数来将系数转化为OR值。
ggcoef_model(fit.cox, exponentiate = TRUE)
5. 调整参数自定义美化图形
也可以调整其他参数来自定义图形。
比如调整show_p_values 参数来去掉纵坐标的P值。
ggcoef_model(fit.cox, exponentiate = TRUE,
show_p_values = FALSE)
可以调整signif_stars 参数来去掉纵坐标的星号值。
ggcoef_model(fit.cox, exponentiate = TRUE,
show_p_values = FALSE,
signif_stars = FALSE)
可以使用errorbar_height来调整误差棒的高度;使用point_size参数来调整OR点的大小。
ggcoef_model(fit.cox, exponentiate = TRUE,
show_p_values = FALSE,
signif_stars = FALSE,
errorbar_height = 0.4,
point_size = 3)
同样既然是ggplot2扩展包,那么ggplot2的一些语法也是可以直接使用的。
比如使用黑白主题。
ggcoef_model(fit.cox, exponentiate = TRUE,
show_p_values = FALSE,
signif_stars = FALSE) +
ggplot2::theme_bw()
其他主题也可以看看,比如theme_linedraw()。
另外可以去掉图例。
ggcoef_model(fit.cox, exponentiate = TRUE,
show_p_values = FALSE,
signif_stars = FALSE) +
ggplot2::theme_light() +
ggplot2::theme(legend.position="none")
如果要调整更多的参数,可以查看函数的帮助文档。
参考文档
ggstats包帮助文档
关注下方公众号,分享更多更好玩的R语言知识。
点个在看,SCI马上发表。