TCGA+biomarker——Calibration curve

通常情况下,通过以下几种指标来对模型进行评价
1)区分度:采用指标C-index和ROC曲线来评价区分度,一般文章都是二选一。

  • C-index即一致性指数(index of concordance),通过评估模型预测结果与实际观察结果的符合程度,以评价模型的预测准确性。
  • ROC曲线,展示特异性和敏感性,ROC曲线下的面积被称为AUC,它介于0.5和1之间,作为数值可以直观的评价分类器的好坏,值越大越好。
    2)校准度:通常采用校准曲线(calibration curve)来进行评价一致性/校准度,即预测值和真实值之间的差异
    3)DCA:决策曲线(DCA)用来帮助确定高风险的患者进行干预、低风险的患者避免过度医疗。
    image

这里先介绍Calibration curve...................

校准曲线简介

Calibration curve,直译过来就是校准曲线或校准图。其实,校准曲线就是实际发生率和预测发生率的散点图。实质上,校准图曲线是把Hosmer-Lemeshow拟合优度检验的结果可视化。目前校准曲线常用来评价logistic回归和cox回归模型。

校准曲线案例
image

不同数据集的校准曲线

image

不同时间的校准曲线

image

不同模型的校准曲线

校准曲线解读
image

解读:横坐标为预测的事件发生率(Predicted Probablity),纵坐标是观察到的实际事件发生率(Actual Rate),范围均为0到1,可以理解为事件发生率(百分比)。对角线的虚线是参考线,即预测值=实际值的情况。红线是曲线拟合线,两边带颜色部分是95%CI。

  • 如果预测值=观察值,则红线与参考线完全重合
  • 如果预测值>观察值,即高估了风险,则红线在参考线下面
  • 如果预测值<观察值,即低估了风险,则黑线在参考线上面
如何绘制校准曲线?

经过查阅多个教程,校准曲线就是以预测值为X轴,真实值为Y轴绘制,Hosmer-Lemeshow拟合优度检验结果的可视化的图。真实值即为status值,比如生存(0:生;1:死),0—1代表了真实的死亡风险。预测值是根据构建好的模型预测出每个患者的死亡风险,采用predict()函数返回风险评分值,并将该评分值加以转化成更为直观的风险值。在得到真实值和预测值的基础上进行校准曲线的绘制和显著性检验。以下是两种比较简单的矫正曲线方法,但成图都比较单调,不够美观。方法1采用的是rms包的calibrate函数(输入构建模型即可,简单)。方法2先计算出预测值和真实值,然后用plotCalibration函数绘图。

#-------------------------------------校准曲线(方法1)--------------------------------
rm(list = ls())
# install.packages("survival")
# install.packages("rms")

library(survival)
library(rms)
#载入并查看数据集
data("lung") #status中1代表活着,2代表死了. sex中male=1,female=2
head(lung)
str(lung)

#构建回归模型
## 参数说明:
## 1、绘制校正曲线前需要在模型函数中添加参数x=T, y=T,详细参考帮助
## 2、u需要与之前模型中定义好的time.inc一致,即365或730;
## 3、m要根据样本量来确定,由于标准曲线一般将所有样本分为3组(在图中显示3个点),而m代表每组的样本量数,因此m*3应该等于或近似等于样本量;
## 4、b代表最大再抽样的样本量
res.cox1 <- cph(Surv(time, status) ~ age+sex+ph.ecog+ph.karno+pat.karno, data = lung,surv=T,x=TRUE, y=TRUE,time.inc=365)

## 构建校正曲线
## calibrate函数适用于ols, lrm, cph or psm返回对象
cal <- calibrate(res.cox1, cmethod='KM', method="boot",u=365,m=38,B=228)
plot(cal,lwd=2,lty=1,
     errbar.col=c(rgb(0,118,192,maxColorValue=255)),
     xlab="Nomogram-Predicted Probability of 1-Year OS",
     ylab="Actual 1-Year DFS (proportion)",
     col=c(rgb(192,98,83,maxColorValue=255)))

#------------------------------------校准曲线(方法2)--------------------------------------
rm(list = ls())
#install.packages("PredictABEL")
library(PredictABEL)
library(rms)
library(survival)
#载入并查看数据集
data("lung") #status中1代表活着,2代表死了
head(lung)
lung$status <- ifelse(lung$status==1,0,1)

#构建模型并绘制校准曲线
res.cox2 <- cph(Surv(time,status) ~., data = lung,surv=T,x=TRUE, y=TRUE)
newdata <- lung[101:200,] #用来校准的数据,这里从源数据中调取了部分
pred.lg<- predict(res.cox2,newdata) #每位患者的风险评分
newdata$prob <- 1/(1+exp(-pred.lg)) #将pred.lg做数据转化,数值更直观
prob <- newdata$prob 
plotCalibration(newdata,3, prob, groups=10)  #3为结局指标所在列数

总结: 校准曲线是一种评价模型的方法,在实际项目中应该是构建好模型,然后评价模型,改善模型,确定最终模型(C-index/ROC/DCA结果表明模型合格),最后对模型进行可视化展示(如森林图、列线图,生存点图等)。

往期回顾
TCGA+biomarker——常见结果展示
TCGA+biomarker——Sample基线表
TCGA+biomarker——单因素Cox回归
TCGA+biomarker——多因素Cox回归
TCGA+biomarker——Cox回归森林图
TCGA+biomarker——Nomogram列线图

更多内容可关注公共号“YJY技能修炼”~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355