Calibration曲线能够评价模型或者变量对结局预测的准确性。
下面基于R语言自带的数据集lung数据集展示一下Logistic回归calibration曲线的画法,这段代码同时还会展示出斜率(slope)和bier指数,帮助你在图形和数据上评价模型预测的效果
library(rms)
#看一下数据集
head(lung)
# sex+ph.karno+meal.cal+pat.karno,用这几个指标来预测结局状态
m3 <- lrm(status1~sex+ph.karno+meal.cal+pat.karno, x = T,y = T,data = lung)
#B是bootstrap,重抽样次数,可以酌情写成500或者1000或者更多。
cal <- calibrate(m3, method = "boot", B = 500)
plot(cal,main = "Calibration Curve")
#选择第101到200行的数据来建立为新的数据集,这里的行数是可以自行选择和调整的
newdata <- lung[101:200,]
pred.lg<- predict(m3,newdata )
newdata$prob <- 1/(1+exp(-pred.lg))
val.prob(newdata$prob,as.numeric( newdata$status1) , m=10, cex=.9)
斜率(slope)和bier指数是从数值上来评价模型预测的准确性的,其中slope越接近1,说明模型预测的准确性越好,bier指数<0.25, 说明模型预测的准确性比较好。
Dxy跟AUC可以换算,AUC=Dxy/2+0.5
在logistics回归里面,AUC和concordance index (c index)是同一个东西,在Cox回归里面,两者有区别。
一般情况下AUC在0.50认为没有预测价值,0.50-0.70为准确度较低;在0.70-0.80之间为准确度可接受;在0.71-0.80之间为准确度佳;而高于0.90则为高准确度(DOI: 10.1097/JTO.0b013e3181ec173d)。