常见列线图的绘制及自定义美化详细教程

常见列线图的绘制及自定义美化详细教程,第1张

预测模型常见的呈现方式包括列线图、评分系统、网页计算器等,不同呈现方式各有优劣。

常见列线图的绘制及自定义美化详细教程,图片,第2张

今天来学习下论文中常见的普通列线图的绘制及自定义美化。

1. 加载R包

绘制列线图的常用R包是rms包,可以直接从CRAN上安装。

install.packages('rms')
library(rms)
2. 加载数据集

使用AER包中的Affairs数据集进行演示,Affairs数据集记录了婚外情的数据。

该数据从601个参与者身上收集了9个变量,包括一年来婚外私通的频率以及参与者性别、年龄、婚龄、是否有小孩、宗教信仰程度(5分制,1分表示反对,5分表示非常信仰)、学历、职业(逆向编号的戈登7种分类),还有对婚姻的自我评分(5分制,1表示非常不幸福,5表示非常幸福)。

# 加载数据
data(Affairs, package='AER')
summary(Affairs)
常见列线图的绘制及自定义美化详细教程,图片,第3张

接下来进行简单的数据处理,感兴趣结果是是否发生婚外情,所以需要将affairs变量转化为二分类变量ynaffair。

Affairs$ynaffair[Affairs$affairs   0]  - 1
Affairs$ynaffair[Affairs$affairs == 0]  - 0
Affairs$ynaffair  - factor(Affairs$ynaffair,
 levels=c(0,1),
 labels=c('No','Yes'))
summary(Affairs)
常见列线图的绘制及自定义美化详细教程,图片,第4张3. 构建逻辑模型

我们使用年龄age、婚龄yearsmarried、宗教信仰religiousness、对婚姻的自我评分rating这4个变量来构建模型。

# 拟合模型
fit  - lrm(ynaffair ~ age + yearsmarried + religiousness + rating, 
 data=Affairs)
fit
常见列线图的绘制及自定义美化详细教程,图片,第5张

如上所示,输出了模型的很多信息,图形解读可以百度或者微信检索一下。

4. 绘制简单列线图

下面来简单的绘制了模型的列线图,使用nomogram()函数绘制列线图。

# 前面两行代码是必须的,不然会报错
ddist  - datadist(Affairs); 
options(datadist='ddist')
nomogram  - nomogram(fit, fun = function(x)1/(1+exp(-x))) # 逻辑回归计算公式
# 绘制列线图
plot(nomogram)
常见列线图的绘制及自定义美化详细教程,图片,第6张

如上所示,即简单的绘制出了列线图。

5. 自定义美化列线图

rms包中列线图的绘制函数包括nomogram()函数和plot()函数,里面的图形设置修改参数很多,下面挑选一些常见的参数演示下自定义美化。

常见列线图的绘制及自定义美化详细教程,图片,第7张5.1 修改模型变量名称标签和因子水平名称

可以使用label参数修改变量名称标签。

可以使用factor函数修改分类变量的水平标签。

# 设置因子的水平标签
Affairs$religiousness  - factor(Affairs$religiousness,
 levels=c(1,2,3,4,5),
 labels=c('反对','有点反对','信仰','有点信仰','非常信仰'))

# 设置变量的名称
label(Affairs$age)  - '年龄'
label(Affairs$yearsmarried)  - '婚龄'
label(Affairs$religiousness)  - '宗教信仰'
label(Affairs$rating)  - '婚姻自我评分'
 
nomogram  - nomogram(fit, fun = function(x)1/(1+exp(-x))) # 逻辑回归计算公式
# 绘制列线图
plot(nomogram)
常见列线图的绘制及自定义美化详细教程,图片,第8张5.2 修改坐标轴刻度和标题

可以使用fun.at参数和funlabel参数修改坐标轴的刻度和标题。

nomogram  - nomogram(fit, fun = function(x)1/(1+exp(-x)), # 逻辑回归计算公式
 fun.at = c(0.05, seq(0.1, 0.9, by = 0.2),0.95),
 # 风险轴刻度
 funlabel = '婚外情风险') # 风险轴便签
plot(nomogram)
常见列线图的绘制及自定义美化详细教程,图片,第9张5.3 修改坐标轴名称、刻度名称的文字大小和列线图网格线

可以使用cex.axis参数修改坐标轴的文字大小;

可以使用cex.var参数修改刻度名称的文字大小;

可以使用col.grid参数在列线图上添加网格线。

nomogram  - nomogram(fit, fun = function(x)1/(1+exp(-x)), # 逻辑回归计算公式
 fun.at = c(0.05, seq(0.1, 0.9, by = 0.2),0.95),
 # 风险轴刻度
 funlabel = '婚外情风险') # 风险轴便签
plot(nomogram,
 cex.axis = 1.5,
 cex.var = 1.5,
 col.grid = gray(c(0.8, 0.95)))
常见列线图的绘制及自定义美化详细教程,图片,第10张5.4 修改评分点标签和总评分标签

可以使用points.label参数和total.points.label参数修改列线图的点标签和总标签。

plot(nomogram,
 cex.axis = 1.5,
 cex.var = 1.5,
 col.grid = gray(c(0.8, 0.95)))
常见列线图的绘制及自定义美化详细教程,图片,第11张5.5 设置列线图的刻度

可以使用tcl参数修改列线图的刻度,负数指定可刻度线的方向。

plot(nomogram,
 cex.axis = 1.5,
 cex.var = 1.5,
 col.grid = gray(c(0.8, 0.95)),
 points.label='变量评分', total.points.label='变量总得分',
 tcl = -1.0)
常见列线图的绘制及自定义美化详细教程,图片,第12张5.6 修改变量名称部分与图形部分的占比

可以使用xfrac参数修改列线图图形部分与左边文字部分的占比,默认0.35。

plot(nomogram,
 cex.axis = 1.5,
 cex.var = 1.5,
 col.grid = gray(c(0.8, 0.95)),
 points.label='变量评分', total.points.label='变量总得分',
 tcl = -1.0,
 xfrac=.55)
常见列线图的绘制及自定义美化详细教程,图片,第13张

列线图的修改参数还有很多,上述这些参数是比较常用的,如果想要学习更多,可以自行查阅函数的帮助文档。

参考资料

rms帮助文件
本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 常见列线图的绘制及自定义美化详细教程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情