系列文章目录
前言
上一节给自己留了个坑,这赶紧过来填上。众所周知Cox模型的校准曲线数据是rms包中的calibrate
函数计算而来的。那里面的数据到底是如何计算来的?搞清楚了这个,或许对进一步了解cox模型有一定帮助。
一、回顾校准曲线绘图数据
第二排数据的来源,也就是mean.predicted,KM,std.err是如何计算的呢?这几个数据是不需要迭代就能算出来的。剩余的数据和1000次bootstrap(自助法抽样)后计算相关。
- KM: 生存分析中的Kaplan Meier法简称KM法。
calibrate
函数计算的结果(以下简称cal)中的KM数据得就是通过Kaplan Meier法计算得到的实际*年生存率 - mean.predicted: 就是通过模型计算而来的平均*年生存率。
- std.err: 是预测生存率的标准误。
二、计算
为了更清楚解决这个问题,采用R语言中lung数据框中的数据,方便大家复现以及发现问题。
1.分组
在通过KM法构建COX模型的校准曲线时,会根据病例的风险进行分组,然后计算每组的平均值,关于这里为什么分组,是因为,KM法计算生存概率时对病例数有一定的要求,通俗来说就是,如果只有一两个病人,是无法计算他的*年生存率的,因此分组数不能太多导致各组病例数较少,大部分文献中分3组至4组就差不多了。
这里先弄清楚两个问题:
- 根据什么分组: 根据*年预测生存概率
- 怎么计算*年生存概率预测值: 山人自有妙计
##随便构建一个cox模型并绘制一个默认的校准曲线
set.seed(1234)
ind <- sample(1:2,size = nrow(a),prob = c(0.7,0.3),replace =T)
train <- a[ind==1,]
test <- a[ind==2,]
dd=datadist(train