列线图(Nomogram)是一种常用的数据可视化工具,它能够直观地展示多个变量之间的关系,并帮助我们理解和解释复杂的数据模式。通过绘制列线图,我们可以将各种变量的影响和相互关联转化为图形化的表示,使得数据解读更加直观和易于理解。
在数据可视化和解释方面,列线图有着独特的优势。首先,它可以帮助我们观察和发现变量之间的线性关系、非线性关系以及交互作用,从而提供更全面的数据分析结果。其次,列线图能够直接计算和显示各个变量对结果的贡献度,帮助我们评估其重要性和影响程度。此外,列线图还可以用于预测和决策支持,帮助我们做出更准确和可靠的预测或判断。
本文旨在通过R语言为工具,手把手教读者如何绘制和解读列线图。我们将提供详细的步骤和示例代码,以帮助读者快速上手并灵活运用列线图技术。通过学习本文,读者将能够在数据分析中充分利用列线图的优势,提升数据解读和决策的准确性和效果。
列线图(Nomogram),也叫做协方差图,是一种用来描述多个变量之间关系的图形化工具。它通常由一条直线和数条刻度线组成,每条刻度线代表一个变量,而每个刻度线上都标记有该变量取值的范围或者数值。通过在不同的刻度线上作出点的位置,可以表示不同变量之间的关系和相互作用。
列线图可以用于许多不同的目的,例如:
为了绘制一张列线图,我们需要准备一些数据,并按照特定的格式进行存储。通常来说,列线图所需的数据应该是连续型的或者是已经经过分组、离散化处理的分类型变量。此外,数据还需要满足一些特定的格式要求,以便能够被R语言中的相关包或函数所识别和绘制。
下面是一些基本的数据格式要求:
library(rms)
library(survival)?
library(survival)
head(gbsg)
结果展示:
???pid?age?meno?size?grade?nodes?pgr?er?hormon?rfstime?status
1??132??49????0???18?????2?????2???0??0??????0????1838??????0
2?1575??55????1???20?????3????16???0??0??????0?????403??????1
3?1140??56????1???40?????3?????3???0??0??????0????1603??????0
4??769??45????0???25?????3?????1???0??4??????0?????177??????0
5??130??65????1???30?????2?????5???0?36??????1????1855??????0
6?1642??48????0???52?????2????11???0??0??????0?????842??????1
>?str(gbsg)
'data.frame':???686?obs.?of??10?variables:
?$?age????:?int??49?55?56?45?65?48?48?37?67?45?...
?$?meno???:?int??0?1?1?0?1?0?0?0?1?0?...
?$?size???:?int??18?20?40?25?30?52?21?20?20?30?...
?$?grade??:?int??2?3?3?3?2?2?3?2?2?2?...
?$?nodes??:?int??2?16?3?1?5?11?8?9?1?1?...
?$?pgr????:?int??0?0?0?0?0?0?0?0?0?0?...
?$?er?????:?int??0?0?0?4?36?0?0?0?0?0?...
?$?hormon?:?int??0?0?0?0?1?0?0?1?1?0?...
?$?rfstime:?int??1838?403?1603?177?1855?842?293?42?564?1093?...
?$?status?:?Factor?w/?2?levels?"0","1":?1?2?1?1?1?2?2?1?2?2?...
age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)
在绘制列线图之前,我们需要先拟合一个模型,以获得变量之间的关系和影响程度。这里我们使用逻辑回归模型作为例子。
ddist?<-?datadist(gbsg[,-1]);?
options(datadist='ddist')
#?拟合逻辑回归模型
model?<-?lrm(status?~?.,?data?=?gbsg[,-1])
nomogram?<-?nomogram(model,?fun?=?function(x)1/(1+exp(-x)))?#?逻辑回归计算公式
#?绘制列线图
plot(nomogram)
为了方便解释和演示过程,我们把列线图的自变量减少几个,我们以age,meno和nodes为自变量生成列线图。
model?<-?lrm(status?~?age?+?meno?+?nodes,?data?=?gbsg[,-1])
nomogram?<-?nomogram(model,?fun?=?function(x)1/(1+exp(-x)))?#?逻辑回归计算公式
#?绘制列线图
plot(nomogram)
我们以第一行数据为例:
>?head(gbsg,1)
??pid?age?meno?size?grade?nodes?pgr?er?hormon?rfstime?status
1?132??49????0???18?????2?????2???0??0??????0????1838??????0
从上面可以看出数据是age = 49,meno = 0;nodes = 2。
从图中可以看出,age 49时对应的分数是11分,然后meno为0对应的分值为0,nodes为2时对应的分数为3分,总分值为14分,总分值对应的预测值是0.3-0.4之间,小于0.5,所以其预测值应该是0,和实际结果一致。除了这些我们还可以看到哪些信息呢?
nodes > age > meno
;
ddist?<-?datadist(gbsg[,-1]);?
options(datadist='ddist')
model?<-?lrm(status?~?.,?data?=?gbsg[,-1])
nomogram?<-?nomogram(model,?fun?=?function(x)1/(1+exp(-x)),funlabel="Risk?of?Event",conf.int=F,lp=F,fun.at=c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.99))?#?逻辑回归计算公式
#?绘制列线图
plot(nomogram)
ddist?<-?datadist(gbsg[,-1]);?
options(datadist='ddist')
model?<-?lrm(status?~?.,?data?=?gbsg[,-1])
nomogram?<-?nomogram(model,?fun?=?function(x)1/(1+exp(-x)),funlabel="Risk?of?Event",conf.int=F,lp=F,fun.at=c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.99))?#?逻辑回归计算公式
#?绘制列线图
plot(nomogram)
rect(0.191,0.095,0.65,0.11,col?=?"green")?#?添加彩色条带
rect(0.65,0.095,0.705,0.11,col?=?"yellow")?#?添加彩色条带
rect(0.705,0.095,1.003,0.11,col?=?"red")?#?添加彩色条带
text(0.4,0.125,"Low")
text(0.68,0.125,"Medium")
text(0.85,0.125,"High")
library(regplot)
ddist?<-?datadist(gbsg[,-1]);?
options(datadist='ddist')
model?<-?lrm(status?~?.,?data?=?gbsg[,-1])
nomogram?<-?regplot(model,plots=c('violin','boxes'),observation=gbsg[2,-1],center=T,subticks=T,droplines=T,title='nomogram',points=T,odds=T,showP=T,rank='sd',interval='confidence',clickable=F)
plot(nomogram)
在本文中,我们介绍了列线图的基本概念、绘制方法和应用场景。列线图是一种常用的数据可视化工具,它可以帮助我们探索变量之间的关系,解释模型的预测效果,并支持数据驱动的决策。
我们提供了一些实用的技巧和建议,如如何解释列线图的结果、如何定制样式、如何探索非线性关系和如何使用交互式可视化工具等。这些技巧可以帮助读者更好地理解和利用列线图。
未来,我们预计列线图将在数据分析中发挥更重要的作用。随着数据量的不断增加和机器学习的广泛应用,列线图将成为处理大规模数据和评估复杂模型的有力工具。我们鼓励读者继续学习和实践列线图的应用,以应对数据分析领域的挑战。
*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」