前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「R」生存分析森林图玩法:变量筛选与多模型可视化

「R」生存分析森林图玩法:变量筛选与多模型可视化

作者头像
王诗翔呀
发布2020-07-06 17:07:36
1.5K0
发布2020-07-06 17:07:36
举报
文章被收录于专栏:优雅R优雅R

之前在写 metawho 包的 deft_show() 函数时用到了 forestmodel 包展示元分析模型结果,后面还用到了我发表在 eLife 上的 TIGS 文章中(当时谁能想到呢?)。forestmodel 包还支持常用的一些模型,如 lm、glm 以及 cox,生存分析使用的 Cox 模型是我比较常用的,之前还修过几个bug,最近想做下批量的单变量Cox分析并进行可视化,碰巧记得 forestmodel 这个包支持模型列表,所以又去翻一翻 GitHub 仓库。

变量筛选

发现 GitHub 有个 issue,说这个包的变量筛选功能不起作用(https://github.com/NikNakk/forestmodel/issues/19)。

仔细看了下源代码,问题很简单,已经在我Fork的仓库中修复了,也提交了合并请求,不过这个作者很少上GitHub,CRAN版本都很久没更新了,所以有兴趣的暂时通过我的仓库里安装吧。

代码语言:javascript
复制
remotes::install_github("ShixiangWang/forestmodel")

这里用示例数据演示下变量筛选的效果:

代码语言:javascript
复制
library("forestmodel")
library("survival")
library("dplyr")
pretty_lung <- lung %>%
  transmute(time,
            status,
            Age = age,
            Sex = factor(sex, labels = c("Male", "Female")),
            ECOG = factor(lung$ph.ecog),
            `Meal Cal` = meal.cal)

print(forest_model(coxph(Surv(time, status) ~ ., pretty_lung))

筛选前:

筛选后:

代码语言:javascript
复制
print(forest_model(coxph(Surv(time, status) ~ ., pretty_lung), covariates=c("Age", "Sex")))

多模型可视化

如果进行批量的单变量分析会产生多个模型,前面说了这个包支持可视化,用我之前写 ezcox 包的示例试试看。

代码语言:javascript
复制
library(ezcox)
zz = ezcox(lung, covariates = c("age", "sex", "ph.ecog"), return_models = TRUE)
ml = zz$models$model
forest_model(model_list=ml)

出来一个很奇葩的图:

我稍微看了下源代码,推测可能是惰性求值出了问题,如果我们自己命令模型名字,问题就不存在了。

代码语言:javascript
复制
names(ml) = c("model1", "model2", "model3")
forest_model(model_list=ml)

虽然这样模型区分的很明显,但我想要的是不需要显示模型名字,因为如果做批量分析,显示名字没有意义,只需要说明做的是单变量分析就可以了。

可惜该包不支持,想一想难度不大,自己增加这个功能,引入了 merge_models 选项,默认是 FALSE,这样也不影响之前的功能。

代码语言:javascript
复制
forest_model(model_list=ml, merge_models = TRUE)

至于上面提到的 bug,我感觉无伤大雅,有兴趣的朋友不妨钻研下代码。

上面图形的显示是可以自定义的,之前整过,有机会可以再说说。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变量筛选
  • 多模型可视化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档