看下R包介绍,这个包可以基于回归模型的结果绘制森林图,这个回归结果包括逻辑回归和Cox回归模型。
下面来学习下这个包。
1. 安装和加载R包
安装R包可以直接从CRAN上安装。
install.packages("forestmodel")
library(forestmodel)
library(survival) # cox回归模型需要
library(dplyr) # 处理数据需要
2. 加载演示数据集
使用colon数据集进行演示。
data(colon) # 加载数据集
str(colon) # 查看数据集结构
查看数据集介绍,可以知道有些变量是分类变量,但是加载进来的数据集变量还是数字型,我们处理一下。
mycolon <- colon %>%
transmute(time,
status,
Age = age,
Sex = factor(sex, levels = c(0,1),
labels = c("Female", "Male")),
Obstruct = factor(colon$obstruct),
Differ = factor(colon$differ),
Extent = factor(colon$extent))
如上代码所示,我将colon数据集中的部分变量转换了因子,并新建了一个数据集mycolon,下面使用mycolon数据集进行演示。
3. forestmodel怎么用?
在R包介绍中,forestmodel包支持可视化的回归模型有lm、glm、coxph三种。
3.1 拟合Cox回归模型
首先我们使用survival包的coxph()函数拟合下Cox回归模型。
coxphmodel <- coxph(Surv(time, status) ~ ., mycolon)
~
符号后的.
表示使用数据集中的全部变量纳入回归模型。
coxphmodel1 <- coxph(Surv(time, status) ~ Age + Sex + Obstruct, mycolon)
# 这个表示纳入Age、Sex、Obstruct三个变量到回归模型中
可视化回归结果比较简单,forestmodel包中可视化函数是forest_model()函数。
forest_model(coxphmodel)
如上图所示,我们就简单的可视化了Cox回归的结果,图形参数的修改看后面。
3.2 拟合逻辑回归模型
forestmodel包也支持逻辑回归模型结果的可视化。
# 拟合逻辑回归模型
glmmodel <- glm(status ~ Age + Sex + Obstruct + Differ + Extent,
binomial(link="logit"), data = mycolon)
# 可视化结果
forest_model(glmmodel)
线性回归模型的结果可视化跟上面差不多,就是先拟合线性模型即可。
4. 修改图形参数
4.1 支持ggplot2主题
首先这个包支持ggplot2的主题,也就是theme_grey()、theme_bw()等。
在函数中设置theme参数即可。
forest_model(coxphmodel,
theme = theme_grey()) # 灰白主题
其他主题可自行尝试。
4.2 panels参数调整
在forestmodel包中,可以通过panels参数调整图形中变量字体样式、粗细、各列宽度等。
panels <- list(
list(width = 0.01),
list(width = 0.1, display = ~variable,
fontface = "bold", heading = "Variable"),
list(width = 0.1, display = ~level),
list(width = 0.05, display = ~n, hjust = 1, heading = "N"),
list(width = 0.05, display = ~n_events,
width = 0.05, hjust = 1, heading = "Events"),
list(width = 0.05,
display = ~ replace(sprintf("%0.1f", person_time / 365.25), is.na(person_time), ""),
heading = "Person-\nYears", hjust = 1),
list(width = 0.03, item = "vline", hjust = 0.5),
list(width = 0.55, item = "forest", hjust = 0.5,
heading = "Hazard ratio", linetype = "dashed",line_x = 0),
list(width = 0.03, item = "vline", hjust = 0.5),
list(width = 0.12, display = ~ ifelse(reference, "Reference", sprintf("%0.2f (%0.2f, %0.2f)",
trans(estimate), trans(conf.low), trans(conf.high))), display_na = NA),
list(width = 0.05,
display = ~ ifelse(reference, "", format.pval(p.value, digits = 1, eps = 0.001)),
display_na = NA, hjust = 1, heading = "p"),
list(width = 0.03))
如上所示,先设置好panels的细节参数,再在forest_model()函数中添加参数即可。
上面中的每一个list表示设置从左至右每一列的参数,自己对照下图上的数字比较。
forest_model(coxphmodel, panels)
4.3 调整分类水平展示
上面的变量与每一个水平是没分开的,在同一线上,可以设置factor_separate_line参数来使其不在同一线上。
forest_model(coxphmodel, panels,
factor_separate_line = T)
好的,这个包就学到这里,有需要的可以查看帮助文件,学习更多知识。
参考资料
forest_model()函数帮助文件