今天为大家分享一篇2019年12月发表在Lung Cancer(中科院分区二区, IF=4.6)上的基于SEER数据库的nomogram文章。文中利用自己医院的数据进行外部验证,套路简单易模仿,逻辑清晰,当然也有自己的一些特点,最后根据预测结果建立了一个在线的nomogram分析(动态nomogram),便于临床应用,接下来小编详细讲解一下。
Title: The role of surgery for atypical bronchopulmonary carcinoid tumor: Development and validation of a model based on Surveillance, Epidemiology, and End Results (SEER) database
标题:手术在非典型支气管肺类癌中的作用:基于SEER数据库建立并验证一项模型
一、文章整体概览
图1. 流程图
从流程图上看并没有什么十分特殊之处,依旧是常规的单因素+多因素+Nomogram+评价。在此基础上,研究团队利用K-M生存曲线更加形象的展现了各危险因素对预后的影响。在流程图右侧的2个框框(本院验证集和动态Nomogram)也是本文亮点。下面,让我们一起来看看本文的基本结果。
二、主要结果概述
1.预后因素筛选(略有不同,对小样本研究课题可模仿)
利用SEER数据库获取507例患者基本信息,建立训练集。按照既往大量文章的常规思路,单因素和多因素是在此507例患者上依次进行的,但是本文不同。在507例患者基础上,研究人员进行了单因素COX回归分析,结果表明11项变量与非典型支气管肺类癌预后相关(图2)。随后,研究人员又排除了43例患者(图3)。此处虽然在文章结果部分已经呈现了排除的患者具体数量和具体原因,但是并没有解释为什么是在这一步排除这些患者,在文中方法部分也没有具体描述。经过团队讨论,我们认为最大的可能是排除了那些单因素COX中有意义的变量资料缺失的患者(即上述11项变量资料缺失的患者被排除在外)。这样操作对于小样本研究课题还是很有意义的,因为此操作可以避免那些因为与预后无关的变量资料缺失而删除部分患者。
图2. 单因素COX回归结果
图3. 单因素之后排除43例患者
在多因素COX回归中,年龄、区域淋巴结活检、手术、淋巴结转移和远处转移被确定为与与OS和CSS独立相关的预后因素。此外,尺寸被确认为与CSS独立相关的预后因素(图4)。
图4. 多因素COX回归结果
2.建立并验证非典型支气管肺类癌患者预后Nomogram
基于与OS独立相关的预后因素,患者利用SEER数据库的464例患者建立了预测非典型支气管肺类癌患者的预后Nomogram(图5)。同时,利用56例本院患者数据进行外部验证。结果表明指标对Nomogram的影响由大到小依次为:手术、年龄、淋巴结转移、远处转移、局部淋巴结活检及肿瘤尺寸。Nomogram的3年AUC(此处原文为C指数,下同)为0.722 (95 % CI: 0.647–0.797),5年AUC为0.737 (95 % CI: 0.675–0.799) 及10年AUC为0.712 (95 % CI: 0.654–0.771)。在外部验证队列中,3/5/10年AUC分别为0.714 (95 % CI: 0.576–0.852, p = 0.008)、0.738 (95 % CI: 0.607–0.869, p = 0.002) 和 0.729 (95 % CI:0.595–0.864, p = 0.003)。校准曲线、DCA也进一步肯定了Nomogram的价值。
CSS的Nomogram呢???尺寸怎么跑OS的Nomogram去了??咱也不知道为啥,文中确实就是这样的。
图5.Nomogram
图6. 训练集ROC曲线、校准曲线及DCA结果
3.比较Nomogram和AJCC TNM分期
这部分内容貌似已经成了现在肿瘤文章的标配了,C指数、AUC、IDI、DCA等等指标都有被利用来比较两者的。本文选用了IDI和ROC。结果表明,相较于AJCC TNM分期,Nomogram在3年、5年及10 年的IDI分别为6.07 %(p < 0.001), 8.44 % (p < 0.001) 和 11.00 % (p < 0.001)。(此处还附上了R代码,需要的可以去官网附件下载)。此外,时间ROC分析结果展示了3年-11年的ROC比较,显示nomogram均优于AJCC分期。
4.动态nomogram在线计算
三、总结
我们首先来聊聊本文最大的亮点,即网页计算器。这个东西不能说很新但是你绝对不能说他没用。虽然列线图在很大程度上已经实现了预测模型的可视化,但是必须承认其在实际应用过程中存在很大的缺陷,尤其是在精准医学的今天。试想一下,如果只给你一张Nomogram,让你去估算结果,能精确吗?几乎不可能!!!要想精确,得用尺子量啊量啊量啊,然后还没发保证你的结果一定准备,尤其尤其尤其是对于连续性变量(图上不可能把每个数值都标注出来)。因此,对于临床应用,这样的网页计算器价值很大,相信这也会给审稿人留下十分不错的印象。
那网页计算器怎么制作和发布呢,今天给大家介绍一份教程。由汕大在读研究生沐青提供,在此特别感谢。
R语言中的DynNom包建立在shiny包(网页设计的R包)的基础上,可将任何广义线性模型或Cox比例风险模型建成网页列线图。这里主要介绍DynNom函数和DNbuilder函数。利用survival包中自带的lung数据来操作演示。
准备步骤:
install.packages("DynNom") #安装包;
library(DynNom) #加载包;
install.packages("survival") #安装包
library(survival) #加载包
data(lung) #加载R内置数据集lung
(1)DynNom函数:(网上现有资料仅介绍到这一部分,但这个函数生成的动态列线图网页链接,脱离R运行环境是无法打开的,因此这里生成的链接并不能直接用于投稿、发表!!!读到本文最后,可生成用于发表文章的网页计算器)
#构建生存预测模型
mod <-coxph(Surv(time, status) ~age + strata(sex) + ph.ecog, data = lung)
DynNom(mod) #生成动态列线图(Dynamic Nomogram)
上述步骤生成的动态列线图
(2)DNbuilder函数:生成可用于投稿、发表的Dynamic Nomogram网页链接。(关闭上步动态列线图网页后继续运行下述代码)
#生成本地DynNomapp脚本文件
DNbuilder(mod) ##生成下图文件于工作目录处
生成DynNomapp文件
进入工作目录文件,利用R打开任一R文件。
这里演示打开server.R(选中文件→打开方式→R studio)
点击R Script 框右上角的Run App按钮:
打开server文件后运行
点击右上角弹出窗口右上角Publish按钮;
选择shinyapps.io云账户;(此步骤前需注册并关联账户,步骤见后)
点击“publish”,等待运行完成,会自动打开可共享的网页列线图。
点击Publish (此步骤前需注册并关联账户,步骤见后)
发布(此步骤前需注册并关联账户,步骤见后)
(温馨提醒:此过程对网速有一定要求,否则会运行报错提示链接超时。运行完成后会自动弹跳出网页列线图)
网页计算器
(https://muqingwang.shinyapps.io/DynNomapp/)
此链接可用于投稿、发表
下面开始补充介绍如何注册shinyapps.io云账号并关联到Rstudio:
1.登录网址https://www.shinyapps.io/
2.点击注册账号(可用邮箱、谷歌账号等),激活。
3.将shinyapps.io云账户关联至Rstudio(在R studio运行下述代码)
install.packages('rsconnect')
library(rsconnect)
运行上述代码后,进入shinyapps.io云账户,点击账号,点击Tokens,复制账号及密码链接代码至Rstudio窗口运行即可关联成功