Cox构建预测模型(4):如何用R语言绘制cox预测模型列线图?(附全套代码)

临床预测模型(clinical prediction model),是指利用数学模型估计研究对象当前患有某病的概率或者将来发生某种结局的可能性。也就是说,临床预测模型是通过已知特征来预测未知,而模型就是一个数学公式,也就是把已知的特征通过这个模型计算出未知结局发生的概率。

列线图就是最为常见的一种预测模型,许多预测模型类文章中都有它的身影。前面已经为大家介绍了预测模型中训练集与验证集的均衡性比较、Cox回归筛选预测因子,今天继续通过R语言复现seer公共数据库的文章,来为大家介绍绘制列线图的方法。同时,如果你是新手小白,或者希望通过更加便捷的方式完成统计分析,这里也会介绍一款可以一站式解决Cox预测模型分析的智能在线统计分析平台——风暴统计

主要内容包括:

一、文献解读

二、利用R语言复现

三、利用在线网站复现

  四、小结 

一、文献解读

案例文献是沈阳医学院公共卫生学院学者基于SEER数据库的一项回顾性研究,旨在建立一个列线图来预测老年恶性骨肿瘤(MBT)患者的总生存期(OS)。

2ce18bcef5ecb5a34cef1e23ddeec72b.png

1. 摘要

背景:恶性骨肿瘤(MBT)是老年患者死亡的原因之一。我们研究的目的是建立一个列线图来预测老年MBT患者的总生存期(OS)。

方法:从SEER数据库下载了2004年至2018年所有老年MBT患者的临床病理数据。他们被随机分配到训练集(70%)和验证集(30%)。采用单因素和多因素Cox回归分析确定老年MBT患者的独立危险因素。基于这些危险因素构建列线图,以预测老年MBT患者的1年,3年和5年OS。然后,利用一致性指数(C指数)、校准曲线和受试者工作曲线下面积(AUC)来评价预测模型的准确性和判别力。决策曲线分析(DCA)用于评估列线图的临床潜在应用价值。根据列线图上的分数,将患者分为高风险组和低风险组。Kaplan-Meier(K-M)曲线用于测试两名患者之间的生存差异。

结果:从SEER数据库下载了2004年至2018年所有老年MBT患者的临床病理数据。他们被随机分配到训练集(70%)和验证集(30%)。采用单因素和多因素Cox回归分析确定老年MBT患者的独立危险因素。基于这些危险因素构建列线图,以预测老年MBT患者的1年,3年和5年OS。然后,利用一致性指数(C指数)、校准曲线和受试者工作曲线下面积(AUC)来评价预测模型的准确性和判别力。决策曲线分析(DCA)用于评估列线图的临床潜在应用价值。根据列线图上的分数,将患者分为高风险组和低风险组。Kaplan-Meier(K-M)曲线用于测试两名患者之间的生存差异。

结论:我们建立了一个新的列线图来预测老年MBT患者的1年,3年,5年的OS。该预测模型可以帮助医生和患者制定治疗计划和后续策略。、

2. 数据介绍

文献共纳入1641名2004-2018诊断的老年MBT患者的临床病理数据。暴露因素包括年龄、种族、性别、诊断年份、组织学类型、分级、分期、原发位置、TNM分期、肿瘤大小、是否化疗、是否放疗及手术方式。

10e42a3fd1af26f0c714eec605cb50fa.png

3.研究结果

这篇文献构建Cox回归预测模型的统计思路十分清晰。首先按照7:3将数据集进行拆分获得训练集与验证集,然后做均衡性检验,比较训练集和验证集的差异性,再做单因素和多因素Cox回归,最终纳入10个变量建立了列线图。通过患者的个体特征对照列线图相加可以获得总分,表明每个患者的MBT的特异性生存概率。

15ab360f8d44c6a16e0db31292e30bd1.png

二、利用R语言复现

下面我们利用从SEERStat中提取的相关数据进行复现。根据文献中的纳入排除标准,提取涉及的相关数据,最终共纳入1,574名患者(原文献1,641)。介于SEERStat数据库会有更新,因此提取的样本量与原文会有所出入,这里请大家多关注统计方法的运用!本次用到的是R版本是4.3.1。

1. 安装加载R包

绘制列线图我们主要用到以下两个R包。

if(!require("survival")) install.packages("survival")
if(!require("rms")) install.packages("rms")
library("survminer")
library("rms")

2.完成前期准备工作

在绘制列线图之前必须要完成数据的导入与拆分,以及预测因子的筛选,列线图的构建只用到了训练集,这里大家需要注意!详细教程可以参考之前的文章:

以上这些内容可参见

Cox构建预测模型(2):如何用R语言拆分数据集并作均衡性检验

Cox构建预测模型(3):如何用R语言做cox先单后多回归分析!(附全套代码)”               

3. 构建列线图

这里列线图中预测变量的纳入直接根据原文结果进行复现,选择将age、Race等10个变量纳入到列线图中。通过患者的个体特征对照列线图相加可以获得总分,表明每个患者的MBT的特异性生存概率。

#打包数据,调用rms包
ddist <- datadist(train)
options(datadist='ddist')


#进行Cox回归
cox <- cph(Surv(months,status)~age + Race + Sex + Histologic.type
           + Grade + Stage + Primary.Site + Tumor_size +m_stage + Surgery,
           surv=T,x=T, y=T,data=train)
surv <- Survival(cox)


#计算预测概率
sur_1_year<-function(x)surv(1*12*1,lp=x)  
sur_3_year<-function(x)surv(1*12*3,lp=x)
sur_5_year<-function(x)surv(1*12*5,lp=x)


#绘制列线图
nom_sur <- nomogram(cox,fun=list(sur_1_year,sur_3_year,sur_5_year),
                    lp= F,
                    funlabel=c('1-year survival probability','3-year survival probability','5-year survival probability'),
                    maxscale=100,
                    fun.at=c('0.9','0.8','0.7','0.6','0.5','0.4','0.3','0.2','0.1'))
plot(nom_sur,xfrac=0.25)

代码解读:“lp= F”指是否显示系数轴,“funlabel”指风险轴刻度,“maxscale” 参数指定最高分数,一般设置为100或者10分,“fun.at”设置生存率的刻度,“xfrac”设置数值轴与最左边标签的距离。

R语言复现得到的列线图如下:

a04ade19619339ba6fdc2f22b0e9dfde.png

三、利用在线网站复现

如果没有代码基础,或者希望通过更便捷的方式完成统计分析,推荐使用这个智能在线统计分析平台——风暴统计。一键成三线表,便捷又快速。

网址:www.medsta.cn(电脑端浏览器打开)

或medsta.cn(medical statistics缩写) 

1.进入网站分析模块

电脑端打开风暴统计平台——“风暴智能统计”模块,点击“临床预测模型(最新)”,进入“cox预测模型”页面。

e472e13302ae7d068d994a3f8c901d06.png

2.完成前期的准备工作

通过平台绘制列线图前同样需要先导入数据完成数据的拆分通过Cox回归筛选预测因子三个步骤。

如何利用R语言拆分数据集并做均衡性检验

3.绘制列线图

“Cox预测模型”板块,首先完成回归因变量与自变量的选择,包括生存时间、生存结局、时间节点、不同类型的回归自变量。由于是根据文献进行复现,因此,这里只选入了文献中已经筛选好的变量。大家自己在实践过程中不要忘记多因素回归设置哦!

8f3846f37d87a4a353e8bbcfc056e5d9.png

这个时候,就可以在下方直接查看列线图了。如果需要通过右侧对图形进行美化调整,须在左侧勾选“自定义设置”,下图为默认设置下的列线图,已经比较简洁美观了。

cb5459c21c2f3aa51d3992748cb54c75.png

另外,网站支持下载PDF版或PNG版图片。网站直接显示的列线图中数轴标注有所挤压,也不够清晰,通过左下侧的下载设置调节后的电子版图片就没有这个问题了,十分的高清美观!

网站版下载的电子版列线图:

3b7d66272571c9c5a58961cc3952a210.png

四、小结

通过对比发现,网站版列线图的绘制更加的省时省力,对新手小白十分的友好,如果您在实际中需要用到列线图的绘制,不妨来风暴统计,花几分钟试一试,都是免费的哦!

d2b04bbc3c46f075f24bd9ee9afc2354.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值