回归分析的可视化-nomogram

Nomogram就是这样一种有效的工具,中文常称为诺莫图或者列线图,其实质就是回归方程的可视化。它根据所有自变量回归系数的大小来制定评分标准,给每个自变量的每种取值水平一个评分,对每个患者,就可计算得到一个总分,再通过得分与结局发生概率之间的转换函数来计算每个患者的结局时间发生的概率。图1就是一个关于COX回归的nomogram图中points就是一个选定的评分标准或者尺度,对于每个自变量取值,在该点做一条垂直于Points轴的直线(可通过直尺),交点即代表该自变量取值下的评分,如CEA,取0时评分为0分,CEA20时评分约为12.5分。以此类推,计算每个患者各个自变量对应的分值points,加起来就是总分total points。同样的道理,在Total Points轴上找到该患者总分对应的点,画一垂直直接到生存概率轴上(如3年生存概率3-year Survival或者5年生存概率 5-year Survival),交点即为该患者的3年或5年生存概率。该方法只要给予简单的说明就可以轻松的掌握使用方法。


1 nomogram示意图

空白1来源于JCO的一篇文献,http://jco.ascopubs.org/content/31/9/1188.long。文献上列出了详细的绘制nomogramR程序,该文章曾在丁香园和人大经济论坛等论坛上掀起了关于nomogram的热议。下面就随我一起来一步步的解读nomogramR程序。

空白第一步:加载函数包。由于R中是采用rms包的nomogram函数来绘制诺莫图,因此首先需要加载rms

library(rms)

空白第二步:构建COX回归模型

S<-Surv(time,status)

f < -cph(S∼CEA+CA-199+…., x = T, y = T, surv = T, time.inc = 3 or 5)

注意:这里time.inc不一定是3或者5,可以随意取值,但要根据你的生存时间的基本单位来定,如果是月,那就可以是12(月)或者36(月),而如果时间的基本单位是年,很明显一般不会随访但12年或者36年,那么time.inc12或者36就会导致程序错误;在采用cph构建COX模型之间通常需要采用datadist函数将数据“打包”一下,dd<-datadist(CEA,CA-199,…)options(datadist='dd')

空白第三步:构建nomogram

nom < - nomogram(f, fun =list(function(x) surv(3, x),function(x) surv(5, x)),

fun.at = c(0.05,seq(0.1, 0.6, by = 0.1), 0.65),

funlabel = c(“3-year Survival”,“5-year Survival”))

注意:与之前构建COX模型时一样,在list(function(x) surv(3, x),function(x) surv(5, x))中,35代表的是你想要预测哪个时间点的生存概率,要根据数据的时间单位来设置,如果单位是月,这里就应该是36602fun.at是设置生存概率轴的显示范围,这里只显示0.050.65这个区间

空白第四步:绘制nomogram

plot(nom)

空白到这里我们就成功的绘制了所需要的nomogram图,那么这个nomogram用来做预测的效果怎么样呢,是好还是不好,需要有个评价,目前大多通过两个方面来评价,一个是一致性指数C-index,另外一个是标准曲线Calibration Curve(如图2所示)。其中C-indexROC曲线下面积AUC有点相似,但概念有所区别,C-index是通过将所有患者随机两两组对,计算所有对子中预测生存概率高的患者生存时间也长的对子占全部对子的比例,表示预测结果与实际结果的一致性程度。标准曲线则是比较nomogram预测的结果与K-M法结果的一致性,结果越一致,标准曲线越靠近对角线。


空白下面我们就来看看nomogram预测效果的评价过程

1)计算C-index

采用Hmisc包中的rcorrcens函数来计算

rcorrcens(S∼predict(f))

C-index置信区间95%CI的计算:公式与常用的置信区间公式一致,需要注意的是在这里标准误SE = S.D/2S.Drcorrcens函数输出的标准差

2)绘制标准曲线

cal < -calibrate(f, cmethod = “KM”,method = “boot” , u = 3 or 5, m = 100, B = 1000)

注意:这里u需要与之前f中定义好的time.inc一致,即ftime.inc3时,此处u即为3;②m要根据样本量来确定,由于标准曲线一般将所有样本分为3组(在图中显示3个点),而m代表每组的样本量数,因此m*3应该等于或近似等于样本量;

par(mar=c(8,5,3,2),cex = 1.0)

plot(cal1,lwd=2,lty=1,errbar.col=c(rgb(0,118,192,maxColorValue=255)),xlim=c(0,1),ylim=c(0,1),

xlab="Nomogram-Predicted Probabilityof 3-Year DFS",ylab="Actual 3-Year DFS (proportion)",

col=c(rgb(192,98,83,maxColorValue=255)))

注意:程序中xlimylim请根据自己标准曲线的实际情况进行调整,如:若3各点的值都大于0.6,则xlim可设为c(0.6, 1)

lines(cal1[,c("mean.predicted","KM")],type="b",lwd=2,col=c(rgb(192,98,83,maxColorValue=255)),pch=16)

abline(0,1,lty=3,lwd=2,col=c(rgb(0,118,192,maxColorValue=255)))

  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值