vlambda博客
学习文章列表

R语言系列5:基于Cox回归的临床预测模型校准曲线绘制


  •               




上一篇文章,我们讲到。今天主要围绕模型验证部分进行讲解及示范操作,Calibration curve绘制


1

Calibration curve


R语言系列5:基于Cox回归的临床预测模型校准曲线绘制


横坐标:预测概率 predictive probability

纵坐标:实际发生概率 actual probability

即用于比较预测情况与实际情况拟合情况,评估模型校准、预测能力


如果预测值=实际值,则曲线与对角线完全重合

如果预测值>实际值,则曲线在对角线之上,代表高估风险

如果预测值<实际值,则曲线在对角线之下,代表低估风险


2

直接上数据,上代码

有关模型构建,前面已述,代码与之前重复


输入文件:dev.csv


模型构建:

dev<-read.csv("dev.csv") head(dev)
library(rms)library(foreign)library(survival)
#将time变为num数字形式dev$time<-as.numeric(dev$time)#将其余变量转为factor并进行标注dev$age<-factor(dev$age,labels=c('<50','50-59','60-69','70-79', '>=80'))dev$sex<-factor(dev$sex,labels=c('Male','Female'))dev$race<-factor(dev$race,labels=c('White','Black','Other'))dev$marry<-factor(dev$marry,labels=c('Married','Unmarried','Divorced or Seperated','Widowed'))dev$site<-factor(dev$site,labels=c('cecum','ascending colon','hepatic','transverse', 'splenic', 'descending', 'sigmoid'))dev$size<-factor(dev$size,labels=c('<3','<4','<5', '<6', '<7', '<8', '>=8'))dev$grade<-factor(dev$grade,labels=c('I','II','III', 'IV'))
#打包数据ddist <- datadist(dev)options(datadist='ddist')
#time单位是:月units(dev$time) <- "Month"
fcox <- cph(Surv(dev$time,dev$os==1) ~ age + race+ size+marry+grade,surv=T,x=T, y=T,data=dev)#画图surv <- Survival(fcox) nom <- nomogram(fcox, fun=list(function(x) surv(36, x), function(x) surv(60, x)), funlabel=c("3-years Survival Probability", "5-years Survival Probability"),lp=F)plot(nom)


R语言系列5:基于Cox回归的临床预测模型校准曲线绘制



Calibration curve绘制:

#计算三年生存率的标准曲线fcox3 <- cph(Surv(dev$time,dev$os==1) ~ age + race+ size+marry+grade,surv=T,x=T, y=T,time.inc = 36,data=dev)
cal3 <- calibrate(fcox3, cmethod="KM", method="boot", u=36, m=1200, B=500)
plot(cal3)

#计算五年生存率的标准曲线fcox5 <- cph(Surv(dev$time,dev$os==1) ~ age + race+ size+marry+grade,surv=T,x=T, y=T,time.inc = 60,data=dev)
cal5 <- calibrate(fcox5, cmethod="KM", method="boot", u=60, m=1200, B=500)
plot(cal5)



注:代码内 m=1200,是根据样本量n而定,一般m=n/4或n/5即可。

可以尝试更改,观察曲线改变


有关模型验证,在后续课程会陆续讲解C指数,NRI, IDI计算


后台回复 R05,获取演示数据及配套代码,交流为主~