语言nomogram校准曲线图_R语言实现Cox模型校准度曲线绘制

01

研究背景

       这是关于cox模型的第二篇文章,上一篇文章分享了运用Lasso回归如何筛选变量,将筛选后的变量绘制Nomogram图,本章分享构建模型后,如何绘制校准曲线。

      cox模型的验证不同于Logistic回归,cox的结局包括时间和状态,所以对于某个患者来说,他的结果是否准确,就要看模型在他随访的时间点,所预测的结局是否和真实的状态一致,两者一致说明拟合不错,模型准确。虽然大部分患者的患者的随访时间都不一样,但对于生存分析来说,我们更关注一段时间在群体中的效应,比如1年生存率、3年生存率和5年生存率,以及中位生存率。换句话说,在评价手术后或者药物治疗后的效果时,更关注某一段时间后的平均疗效。

02

案例研究

       本文数据采用R自带的lung数据集,一个晚期肺癌数据集,收集了228例癌症患者的生存资料,包含患者年龄、性别、生存时间、生存状态等10个变量。本文利用年龄、性别和ecog评分三个变量构建模型,绘制列线图并绘制指定时间点的校准曲线。

临床研究一般有提供多个危险因素,首先做单因素的筛选,具体筛选方法,见公众号之前的文章。详细Nomogram图绘制见之前文章,本章详细说明校准曲线的绘制和参数说明,采用验证的方法是基于原始数据集的重抽样验证。

03

R代码及解读

##加载包 明确每个包的作用library(rms)  ##绘制列线图library(survival)  ##生存分析包##调用数据,数据格式与普通的spss中格式一样,一行代表一条观测,     ##一列代表一个变量;data(lung)d str(d)aggr(d,prop=T,numbers=T) #判断数据缺失情况,红色表示有缺失。d 
 str(dt)  ##查看每个变量结构 aggr(dt,prop=T,numbers=T) #判断数据缺失情况,红色表示有缺失。 d 

5bbcde9bb3a7600643a8d0effd574dab.png

      由图片可看到所有变量都为蓝色,没有缺失值,红色表示有缺失,并展示出缺失比例。如果用na.omit()函数按照行删除。

        第一步,数据整理。

###添加变量标签,在列线图上展示分类标签,作图用到d$sex ##########################################################################d[,6] ##结局变量转换d$status str(d)##可以查看数据结构

        第二步:构建模型并绘制列线图

ddoptions(datadist='dd') #设置工作环境变量,将数据整合##coxm ###绘制cox回归生存概率的nomogram图## 构建Nomo图的对象只能是rms保重d额cph()函数nom                               function(x)surv(2*365,x)), ##算出不同时间节点生存率值,显示在列线图上                funlabel = c('1-year probability',                             '2-year probability'),                             lp=F,                fun.at=c('0.9','0.85','0.80','0.70','0.6','0.5','0.4','0.3','0.2','0.1'))par(mar=c(2,5,3,2),cex=0.8)##mar 图形空白边界  cex 文本和符号大小plot(nom,xfrac=0.6)

5b2d89b7e689dcf74acd38912aed6973.png

      该图为1年和2年生存率的列线图,性别的标签在图上展示出来了。接下来分别对1年生存率和2年生存率做验证曲线。

       第三步:绘制校准曲线

###这里演示,采用age sex 和ph.ecog 构建coxph模型##构建校准曲线##time.in 和 u 要是一样的,都是要评价的时间节点coxm_1 cal_1##绘制1年生存期校准曲线par(mar=c(7,4,4,3),cex=1.0)plot(cal_1,lwd=2,lty=1, ##设置线条形状和尺寸     errbar.col=c(rgb(0,118,192,maxColorValue = 255)), ##设置一个颜色     xlab='Nomogram-Predicted Probability of 1-year DFS',#便签     ylab='Actual 1-year DFS(proportion)',#标签     col=c(rgb(192,98,83,maxColorValue = 255)),#设置一个颜色     xlim = c(0,1),ylim = c(0,1)) ##x轴和y轴范围##绘制2年生存期校曲线##time.in 和 u 要是一样的,都是要评价的时间节点coxm_2 cal_2plot(cal_2,lwd=2,lty=1,  ##设置线条宽度和线条类型     errbar.col=c(rgb(0,118,192,maxColorValue = 255)), ##设置一个颜色     xlab='Nomogram-Predicted Probability of 1-year DFS',#便签     ylab='Actual 2-year DFS(proportion)',#标签     col=c(rgb(192,98,83,maxColorValue = 255)),#设置一个颜色     xlim = c(0,1),ylim = c(0,1)) ##x轴和y轴范围

3d51d5962860e65356f25e0f4b64064e.png

a50aac65a6b6ba0f8011e563923d0b76.png

       绘制校准曲线的参数说明:

    1.绘制校准曲线前需要在模型函数中添加参数x=T,y=T和time.inc 参数

    2.u需要和之前模型中定义好的time.inc一致,根据原数据,要以天为单位

即365或者365*2,u和time.inc其实是一个意思,表示要评价的时间节点。如果它俩不一样,表示你想要评价的时间点不一样,矫正的结果当然不同了。time.inc全称是       time increase 即时间增量。当surv=T时候,表示要计算surv .summary数组,此时time.inc用于计算数组内部不同时间点的数据(seq(0,maxtime,by=time.inc))。评价时间点不能小于最大时间的1/25,也不能超过最大随访时间,会超出评价评价限度,不能评价。如果time.inc省略,则会根据时间单位自动选择,这往往不是我们要的,所以还需要指定值。

    3.m要根据样本量来确定,由于校准曲线一般将所有的样本均分为5组(对应图中的5分节点),而m代表每组样本量数,因此m*5等于或者近似等于样本量

    4.b代表最大再抽样的样本量,一般b=1000,足够使用。

    5.由两个校准图可看,横坐标为预测的生存率,纵坐标为实际的生存率,对角线是预测概率等于实际概率,偏离对角线越远说明预测的误差越大。以上两个图中预测曲线基本和对角线重合,结果还行,这一点也可以通过计算C-index指数看出端倪。

##模型验证,采用surival包#Concordance indexf sum.survc_indexc_index##         C      se(C) ##0.64123438 0.03103835 

      该模型的区分度C-index为0.64,其本质同ROC曲线面积。结果显示,该模型的具有一定区分度。

04

参考文献

  1. 方积乾等. 卫生统计学. 人民卫生出版社。

  2. http://www.360doc.com/userhome.aspx?userid=46405145

  3. https://www.bilibili.com/read/cv5975714/

  4. http://www.360doc.com/content/19/0124/20/52645714_811083591.shtml

  5. http://blog.sina.com.cn/s/blog_13ea9a2450102wzf6.html

  6. https://blog.csdn.net/fjsd155/article/details/84669331

作者介绍:医疗大数据统计分析师,擅长R语言。

更多阅读:

如何进行高维变量筛选和特征选择(一)?Lasso回归

基于Lasso回归筛选变量构建Cox模型并绘制Nomogram

132fc26128a9754b7fa5ba1674256770.png

a1fb2bbf5665b815d76d556b1ee57770.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HDU - 5744 】Keep On Movin (回文串性质,贪心思维,不是水题)

题干: Professor Zhang has kinds of characters and the quantity of the ii-th character is aiai. Professor Zhang wants to use all the characters build several palindromic strings. He also wants to maximize the length of the shortest palindromic s…

国开大学计算机应用基础作业二,国家开放大学《计算机应用基础》形考作业二答案解析 (2)...

.题目1在Word 2010中编辑文本时,编辑区显示的“网格线”在打印时( )出现在纸上。选择一项:A. 全部 B. 不会C. 一部分 D. 大部分 正确答案是:不会题目2Word 2010 处理的文档内容输出时与页面显示模式显示的( )。选择一项:A. 一部分…

转成数组_JavaScript之数组扁平化

今天给大家分享一下JavaScript的数组扁平化。1. 扁平化数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,效果就会如下:知道了效…

【POJ - 2676】Sudoku (经典深搜,dfs数独)

题干: Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. The other cells are empty. The goal is to fill…

计算机专业408题目结构,2019考研408计算机组成原理知识:计算机系统层次结构

计算机组成原理在408计算机综合考试中所占分值45分,说明是必考的重点内容,考生要在这部分多花时间复习。以下是新东方在线整理的的计算机组成原理知识,希望大家认真看。2019考研408计算机组成原理知识:计算机系统层次结构1. 计算机硬件的基本…

overleaf表格_latex 表格制作

在制作latex表格时遇到了以下问题:一、合并单元格包括多行合并、多列合并、多行多列同时合并。多行合并: \multirow{2}{*}{Multi-Row}多列合并: \multicolumn{2}{|c|}{Multi-Column}多行多列同时合并:\multicolumn{2}{|c|}{\multi…

【HihoCoder - 1268】九宫 (dfs,深搜)

题干: 小Hi最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格,在…

河北师范大学计算机应用技术分数线,2019年河北师范大学各专业录取分数线

高考总分达到或超过某一分数线的考生档案,才有资格被招生高校调阅并选择录取。各高校不同专业每一年的录取分数线有所区别,下文是小编给大家整理的2019年河北师范大学各省各专业高考录取分数线详情,供参考!2019河北师范大学各省各…

mysql in partition_MySQL Partition分区扫盲

MySQL从5.1.3开始支持Partition,你可以使用如下命令来确认你的版本是否支持Partition:mysql> SHOW VARIABLES LIKE %partition%;--------------------------| Variable_name | Value |--------------------------| have_partitioning | YES |--------…

【HihoCoder - 1662】查找三阶幻方 (九宫)(暴力)

题干: 给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方? 如果3 x 3的矩阵中每一行、每一列和两条对角线上的3个数之和都相等,我们就认为其构成一个三阶幻方。 Input 第一行包含两个整数N和M。(1 …

mysql主从结构主数据库_mysql主从结构主数据库中的日志

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

计算机英语反思总结,计算机在英语教学中辅助作用的反思

计算机在英语教学中辅助作用的反思 (3页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分题目:计算机在英语教学中辅助作用的反思科目: SS 学校: 灵石第一职…

C 的Pair用法分类整理(精)

1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体&#xff…

mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for time原因:在命令行窗口查看当前的sql_mode配置:select sql_mode;结果如下:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,ERROR_FO…

计算机专业英语霍洪涛出版社,计算机专业英语(霍洪涛)课件Chapter 4.ppt

计算机专业英语(霍洪涛)课件Chapter 4谢谢 * Chapter 4 Operating System Review 前驱,前任 后继,继任 常见的 足够的 有时;在某种情况下 不局限于 目录,存货清单 支付、支出 伪码 * predecessor successor commonplace not limit…

【HDU - 2102】A计划 (麻烦一点的bfs)

题干: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下…

ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库

向表中插入(删除)一条数据 #include #include using namespace std;int main(int argc, char* argv[]){//准备mysql的访问结构MYSQL mysql;mysql_init( &mysql );mysql_real_connect(&mysql,"192.168.16.114",//要访问数据库的IP地址"root",//用户…

渤海船舶职业学院计算机应用公司,渤海船舶职业学院

2016年招生章程已经公布,出国留学网高考网为大家提供2016年渤海船舶职业学院招生章程已公布,更多高考招生信息请关注我们网站的更新!渤海船舶职业学院2016年招生章程一、学校自然情况说明学校全称:渤海船舶职业学院办学地点及校址&#xff1a…

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)

O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。 O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 O3在O2的基础上进行更多的优化,例如使用伪寄存器网络&a…

nginx pdo_mysql_lnmp环境,安装PHP7的扩展pdo_mysql报错的问题?

环境信息:centos7.4 php7.2 mysql5.71.php是编译安装的2.MySQL是用rpm安装的mysql-community-client-5.7.23-1.el7.x86_64.rpmmysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-devel-5.7.23-1.el7.x86_64.rpmmysql-community-embedded-5.7.23-1.el7…