R语言--Cox模型校准曲线原理(一)数据来源
文章目录
- 前言
- 一、校准曲线是什么?
- 二、校准曲线
- 1.怎么画?
- 2.怎么理解?
- 3.验证
- 总结
前言
关于cox模型的校准曲线绘制,大家可以在浏览器中搜索,关于参数设置大部分都已经讲的很明白(这里不过多赘述),但是关于校准曲线的原理,关于校准曲线图上每个点、误差线所代表的意义以及如何计算得来的,相信大部分人不是很明白。通过阅读源码,将我学习到的记录在此,也可以让部分人更加了解自己的数据和模型。
一、校准曲线是什么?
校准曲线就是实际发生率和预测发生率的散点图。
此文会介绍图中各个点、线背后的数据。这里先看一下一个普通的校准曲线(未更改参数)。
二、校准曲线
1.怎么画?
(发文助手说内容太少,我用参数水点长度)
主要是画图参数:
- x:通过calibrate函数得到的object
- xlab:x轴标题
- ylab:y轴标题
- subtitles = TRUE:次标题,这里指图下方的注释(小文字),默认是TRUE,发文章的时候可能需要设置FALSE以去除。
- conf.int = TRUE:是否需要绘制误差线,默认是TRUE,绘制
- cex.subtitles = 0.75:次标题的文字大小
- riskdist = TRUE:是否绘制图上方的轴须图,就是那一条像长毛的东西
- add = FALSE,是否新建一个图还是添加在别的图之上。
- scat1d.opts:这个参数是设置轴须图的,不用过多关注,详情参考scat1d函数的参数。
- par.corrected:参数类型为list,用于设置误差点的参数。默认是NULL,函数内部会自动赋值为
list(col = "blue", lty = 1, lwd = 1, pch = 4)
,你的新参数会覆盖重复的参数。比如编辑可能会有奇怪的要求,不要那个校准的小x点,你就可以设置par.corrected=list(col='white)
。
dd=datadist(data)
options(datadist="dd")
f<-cph(Surv(DMFS新,DMFS结局类型)~组织学细分+T亚分级+S100,time.inc=60,data = data,x=TRUE,y=TRUE,surv=TRUE)
cal <- calibrate(f, cmethod="KM", method="boot", u=60, m= round(nrow(data)/3), B=1000)
cal
plot(cal,xlim=c(0,1),ylim=c(0,1))
2.怎么理解?
从校准曲线图可以发现,存在6个points,3个实心3个x状points,还有3条误差线。结合cal
计算结果可以发现。
实心points:横坐标:是calibrate
函数(以下简称cal)计算结果中的KM列,纵坐标是:cal中的mean.predicted列。
x points:叉状点的纵坐标是cal中的KM.corrected列。
误差条:误差是根据cal中的std.err列计算出来的具体计算函数是:上端:ifelse(KM == 0, 0, pmin(1, KM * exp(1.959964 * std.err)))
。下端:ifelse(KM == 0, 0, KM * exp(1.959964 * (-std.err)))
。
左右下角注释:可以发现图下面还有部分注释信息,含义分别为:
- n=72代表有72数据
- d=29代表结局事件发生数为29(即数据中29例的sutus=1)
- p=6代表cox模型中系数有6个(注意:这里的系数数目和建模的变量数不是一回事,因为分类变量会有多个系数)
- 24 subjects per group表示数据分组(后面将计算的时候再介绍)时,每组24个数据
- Gray: ideal表示灰色的线为理想的线
- B=1000 再这里表示进行了1000次重采样计算。
- Based on observed-predicted表示cal数据中index.orig这一列是怎么计算来的,对于画图没有作用(挖个坑,后面再讲)。
3.验证
那么根据上述运行以下代码看图是否与之相同。
##准备误差线图数据
errl <- ifelse(cal[,"KM"] == 0, 0, cal[,"KM"] * exp(1.959964 * (-cal[,"std.err"])))
errh <- ifelse(cal[,"KM"] == 0, 0, pmin(1, cal[,"KM"] * exp(1.959964 * cal[,"std.err"])))
##绘制误差线图
errbar(x = cal[,"mean.predicted"],y = cal[,"KM"],yminus = errl,yplus = errh,pch=16,cex=1.2,xlim = c(0,1),ylim = c(0,1),asp=1,xaxs='i',yaxs='i',xlab = 'Fraction surviving 60 Day',ylab = 'Predicted 60 Days Survival')
##添加灰色参考对角线
abline(a = 0,b = 1,col='grey')
##添加连线
lines(x = cal[,"mean.predicted"],y = cal[,"KM"])
##添加校准后的点
points(x = cal[,"mean.predicted"],y = cal[,"KM.corrected"],pch=4)
##绘制轴须图
scat1d(x = attr(cal,"predicted"),nhistSpike = 200)
不能说十分相似,只能说一摸一样了(为了表示我真的不是只改了原画图参数所得,可以明显看出上图中灰色参考线的图层在实现底下)。当然了,由于原函数中坐标比例的问题,观感可能不一样,但图表达的意思真的是一毛一样。
总结
为了更好的理解校准曲线,我去看了相关函数的源代码,算是一个自己的学习记录吧。
这篇只是开个头,还远没有结束,后面会继续更的。
本人小白,如有错误,请批评指正
R语言--Cox模型校准曲线原理(一)数据来源相关推荐
- R语言cox回归模型案例(绘制列线图、校正曲线):放疗是否会延长胰脏癌手术患者的生存时间
R语言cox回归模型案例(绘制列线图.校正曲线):放疗是否会延长胰脏癌手术患者的生存时间 目录
- R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错
笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢? 交叉验证将数据分为训练数据集.测试数据集,然后通过训练数据集进行训练,通过测试数据集进行测试,验证集进行验证. 模 ...
- R语言结构方程模型(SEM)在生态学领域中的应用
前言:结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归.因子分析.协方差分析等方法,利用图形化模型方式清晰 ...
- R语言BIOMOD2模型的物种分布模拟
随着生物多样性全球大会的举办,不论是管理机构及科研单位.高校都在积极准备,根据国家林草局最新工作指示,我国将积极整合.优化自然保护地,加快推进国家公园体制试点,构建以国家公园为主体的自然保护地体系.针 ...
- R语言结构方程模型(SEM)在生态学领域中的实践
结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归.因子分析.协方差分析等方法,利用图形化模型方式清晰展示研 ...
- R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)
R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录
- R语言回归模型构建、回归模型基本假设(正态性、线性、独立性、方差齐性)、回归模型诊断、car包诊断回归模型、特殊观察样本分析、数据变换、模型比较、特征筛选、交叉验证、预测变量相对重要度
R语言回归模型构建.回归模型基本假设(正态性.线性.独立性.方差齐性).回归模型诊断.car包诊断回归模型.特殊观察样本分析.数据变换.模型比较.特征筛选.交叉验证.预测变量相对重要度 目录
- R语言KNN模型数据分类实战
R语言KNN模型数据分类实战 目录 R语言KNN模型数据分类实战 #KNN基本原理 #案例分析 #数据集说明
- R语言xgboost模型构建:基于prima糖尿病数据集
R语言xgboost模型构建:基于prima糖尿病数据集 目录 R语言xgboost模型构建:基于prima糖尿病数据集
- R语言回归模型协方差分析(Analysis of Covariance)
R语言回归模型协方差分析(Analysis of Covariance) 目录 R语言回归模型协方差分析(Analysis of Covariance) 输入数据 ANCOVA分析
最新文章
- oracle经常使用函数(1)
- C++ 虚函数在基类与派生类对象间的表现及其分析
- js实现图片无缝循环跑马灯
- 职业经理人应该如何处理如下问题
- JavaWeb笔记05-解决线程安全问题
- 双线性插值算法c 语言实现,双线性插值 - CristianoC的个人空间 - OSCHINA - 中文开源技术交流社区...
- 暑期训练日志----2018.8.24
- showmount -e (CVE-1999-0554) NFS漏洞解决方案
- Tensorflow实践:用神经网络训练分类器
- 图像主观质量评价 评分_图像质量分析工具哪家强?
- JavaScript—当前时间
- 艾宾浩斯记忆表格excel_【日常福利】NAWL-最重要、最高频的学术词汇表【Anki+Excel资源免费送】...
- 架构师的主要职责是什么?
- 做潮人,还是outman?
- 【Django下载文件-Kml文件下载】
- java date dec_java – 将日期从“2009-12 Dec”格式转换为“31-DEC-2009”
- 骚操作之Python微信远程控制摄像头!然后嘿嘿嘿!
- 装机春天时刻,盘点4月高性价比国产SSD
- php偷单,最简单的PHP小偷源码
- iOS开发之Runtime常用示例总结