1. 简介
本文包含3个不同但是相关的概念:
- 时间依存协变量,以及一些常见错误;
- 制作时间依存协变量的工具,更确切的说是如何编码相关数据集;
- 时间依存系数。
2. 时间依存协变量
Cox模型的一个优势是有包含随时间变化的协变量的能力。原因是:在每个事件时间,程序将具有该事件的受试者的当前协变量值与当时处于风险中的所有其他人的当前值进行比较。人们可以将其视为一个彩票模型,在每个死亡时间都有一张图来决定哪个受试者“赢得”该事件。每个受试者的风险评分exp(X β \beta β) 决定他们获胜的可能性,例如,他们为这张图购买多少票。 该模型尝试为每个受试者分配风险评分,以最佳方式预测每幅图的结果,基于:
- 风险集:每个事件中都有哪些受试者; 那些能够“赢得胜利”的受试者集。
- 在事件发生时间之前每个受试者的协变量值。
编码时间相关协变量的简单方法是使用时间间隔。 考虑一个受试者的随访时间从0时到死亡时间为185天,并假设我们有时间依存的协变量(肌酐,creatinine),在第0,90和120天测量的值分别为0.9,1.5和1.2mg/dl。 编码该数据的一种方法是将受试者的时间分解为3个时间间隔0-90,90-120,120-185,每个间隔有一行数据,则数据可能如下列所示:
subject | time1 | time2 | death | creatinine | |
---|---|---|---|---|---|
1 | 5 | 0 | 90 | 0 | 0.9 |
2 | 5 | 90 | 120 | 0 | 1.5 |
3 | 5 | 120 | 185 | 1 | 1.2 |
一个判断是否可以是Cox模型中的时间依存协变量的关键规则很简单,基本就像赌博一样:你无法展望未来。 协变量可能在过去的数据或结果基础上以任何形式发生改变,但可能无法及时到达。 上面的简单数据集示意我们不能在肌酐值0.9和1.5之间添加线性插值,即在第100天得到预测值1.1;而在第100天的时候,1.5的后期价值则没有看到。
再举一个例子,Mayo Clinic衰老研究(MCSA)的最新分析,该研究从Olmsted County中随机抽取分层随机样本并跟进,研究轻度认知障碍(MCI),老年痴呆症和死亡的发生。 文章从一个表开始,比较从未发生MCI的人和曾经发生了MCI的人的基线协变量;然后还有一张表比较基线协变量和生存。这两张表都是对的:如果你考虑R语言的公式,他们可以写成未来结果在公式的左边而过去的信息在右边。 但是一张比较发生和没有发生MCI的人的survival的表将没有意义。因为这意味着将来的结果在等式的左右两边。
另一个更为人熟知的错误例子,是治疗反应的分析:在试验结束时,比较那些对治疗有早期响应的患者的生存曲线(肿瘤缩小,胆固醇降低,或其他什么)和那些没有响应的患者,则会发现有响应者有更好的曲线。 相同数据的情况下,该Cox模型将会显示出一个“强烈”的效果。这个错误的问题出现在那些在还没有响应现象发生的早期死亡样本,将全部被划分到无响应组。
我们经常可以听到对这种不正确方法的警告[1,2,8],但这种分析总是一再被发现。
Redmond等人[7]讨论了一种稍微微妙的错误形式。在治疗乳腺癌患者开始时设定> 85%,65%~85%或<65%的三个剂量分组,并根据患者最终接受剂量分成以上三个剂量组。 但是根据上述情况,这种方法导致了严重的偏离,因为一些早期死亡患者并没有结束他们治疗周期,因此这些患者会被划分到低剂量组里。总剂量的比例风险模型会先显示出剂量的强烈效应,以致于这样的结果鼓励治疗人员针对治疗毒性而推迟必要剂量的减少。
Redmond观察了一个变量:为每个受试者创建一个变量p,定义为受试者最后一项目标剂量的分数。 原计划的12周疗程但是只接受6周后死亡的受试者仍然可以得分100%。这种方法看上去能够解决上一段中的偏离问题,但事实证明它导致了另一个方向的偏离。 原因是经常在后期治疗期由于治疗毒性而降低放疗量,因此寿命更长反而导致了更小的变量p值。这样,关于p的比例风险回归会错误的显示更小的剂量有保护性!
正确的方法是将预测因子作为时间依存协变量处理!对于治疗响应,它是一个所有受试者都是从0开始的变量,并把响应的发生记录为1。对于剂量,它将测量累计剂量。
上述描述的错误有许多种变化:在观察时间对实验室测试值做线性插入,移除没有完成治疗计划的受试者,在两个观察时间内插入不良事件的发生日期,等等。使用未来的数据经常造成系数产生大的正偏差或负偏差,但有时它也会产生较小的偏差。 几乎不可能在任何给定数据集中先验预测哪个发生。 使用这样的协变量类似于在洛杉矶高速公路上慢跑:灾难不是一定发生,却很有可能发生。
最常见的编码时间依存协变量的方法是在模型种使用(start stop]格式。
fit<-coxph(Surv(time1,time2,status)~age+creatinine, data=mydata)
在mydata的数据集中,一个患者可能有以下观测数据:
subject | time1 | time2 | status | age | creatinine |
---|---|---|---|---|---|
1 | 0 | 15 | 0 | 25 | 1.3 |
1 | 15 | 46 | 0 | 25 | 1.5 |
1 | 46 | 73 | 0 | 25 | 1.4 |
1 | 73 | 100 | 1 | 25 | 1.6 |
在这个例子中&#