查看原文
其他

shinyPredict包,绘制动态列线图的优秀R包

段湘杰 R语言统计与绘图 2023-09-05

绘制动态列线图常见的包有DynNom包,这个包用的很多,今天来学习另外一个绘制动态列线图的R包——shinyPredict包。

上面这个图就是使用shinyPredict包绘制的动态列线图。

就个人而言,我感觉这个包比DynNom包好用,功能也更强大一些,学习也不复杂。

下面来学习下这个R包。

1. 安装和加载R包

安装可以直接从CRAN上安装。

install.packages("shinyPredict")  # 安装包
library(shinyPredict) # 加载包

2. 加载数据集

使用survival包的lung数据集进行演示。

library(survival) # 加载包
data(lung) # 加载数据集
View(lung) # 预览数据集

这个数据集里面的变量比较简单。

在创建列线图前将lung数据集中需要用到的分类变量转化为因子。

lung$sex <- factor(lung$sex) # 将性别转换为因子
lung$ph.ecog <- factor(lung$ph.ecog) # 将ph.ecog变量转换为因子

3. 拟合模型

这里拟合三个生存模型用来绘制列线图。

tmp.m3 <- coxph(Surv(time , status ) ~ sex + age,
                data=lung, 
                model = FALSE, y=FALSE)

tmp.m4 <- coxph(Surv(time , status ) ~ sex + age + ph.ecog,
                data = lung,
                model = FALSE, y=FALSE)

tmp.m5 <- coxph(Surv(time , status ) ~ sex + age + ph.ecog + ph.karno,
                data=lung, 
                model = FALSE, y=FALSE)

如上图所示,我们拟合了三个Cox回归模型,每个模型中纳入的变量不同。

4. 创建动态列线图

下面来创建动态列线图。

shinyPredict(models=list("Model 1"= tmp.m3), 
             data=lung[, c("time","status","sex","age")], # 创建动态列线图的数据
             path = "C:\\Rdata\\shiny"# 动态列线图shiny app文件存放位置
             title="Predicting lung cancer mortality"# 列线图的名称

运行上述代码后,会在C:\Rdata\shiny文件路径生成三个文件。

我们使用RStudio打开app.R文件。

如上图所示,点击Run App会生成一个shiny app。

使用起来很简单,如上动图所示,在Data一列中,数据也是实时变化的。

单就显示的信息以及可视化图形来说,这个包比DynNom包好用,功能也更强大一些。

在上面的动态列线图中,我们只纳入了一个模型,我们可以在动态列线图中纳入多个模型,实时查看比较多个模型的结果。

shinyPredict(models=list("Model 1"= tmp.m3, tmp.m4, tmp.m5), 
             data=lung[, c("time","status","sex","age","ph.ecog","ph.karno")], # 创建动态列线图的数据
             path = "./"# 动态列线图shiny app文件存放位置
             title="Predicting lung cancer mortality"# 列线图的名称

运行上述代码,用同样的方法打开shiny app

如上图所示,在左侧可以看到3个模型,可以选择不同的模型查看预测概率。

这个app还支持图形主题修改,比如说我在左上角加入+ theme_bw(),点击SUBMIT,会修改图形的主题,如下所示。

当然,这样纳入多个模型也是有要求的,比如说模型的y变量要相同,另外shinyPredict()函数目前只支持"lm"、"glm"和"coxph"创建的模型,纳入的多个模型必须是同一函数拟合的模型。

最后可以将创建的shiny app部署到shiny服务器上,转化为永久网页。

如果觉得这个包不错,可以点击在看分享给更多的朋友!谢谢!

另外推荐下面这个学习R语言的公众号,超多干货哦!

参考资料

  1. shinyPredict()函数帮助文件

关注下方公众号,分享更多更好玩的R语言知识。
点个在看,SCI马上发表。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存