介绍
生存分析的目标是通过事件发生率来模拟过程。在应用统计设置中,这通常意味着识别与某些与基线相比可能导致更高或更低事件率的协变量。当事件是缓解或死亡时,较高的事件发生率对应于风险较高的患者。在生存建模中一个特别的挑战是存在删失(censoring),即患者在随访时间被记录但事件尚未(或可能永远不会)发生[1]。例如,可以对高风险癌症患者监察一整年,在结束时其中一些患者已经过世而一些患者仍然活着——后者在一年时间内有一个删失观察。
医学研究中最常见的模型是比例风险模型(proportional hazards model),该模型试图捕捉患者发生事件的相对顺序。在这样的框架中,删失患者可以提供信息来模拟事件发生率,因为一个删失的患者比一个经历某事件的患者的寿命更长,他可能是风险较低的患者[2]。在许多具有多个随访点的研究中,患者的协变量信息会随时间而变化。例如,在survival package中的heart数据集中,在心脏移植的等待列表中测量患者存活率。以下是数据片段。
library(survival)
head(heart)
## start stop event age year surgery transplant id
## 1 0 50 1 -17.155373 0.1232033 0 0 1
## 2 0 6 1 3.835729 0.2546201 0 0 2
## 3 0 1 0 6.297057 0.2655715 0 0 3
## 4 1 16 1 6.297057 0.2655715 0 1 3
## 5 0 36 0 -7.737166 0.4900753 0 0 4
## 6 36 39 1 -7.737166 0.4900753 0 1 4
我们可以看到id号是3的患者(第3和4行数据)在等了一个月然后接受移植手术,移植后又过了15个月后死亡;id号是4的患者(第5和6行数据)在等了36个月然后接受移植手术,移植后又过了3个月后死亡。 如上所示,时间相关数据集的格式必须用长格式(long-format),其中每个新的测量周期都被视为新观察。这个填充附加行可以被认为是添加左删失观察(除了上面讨论的标准右删失),因为这个新的“患者”在其开始时间的左边没有提供任何信息。
虽然在生存或时间 - 事件分析的许多数据集中,都具有这些与时间相关的属性,但目前使用glmnet或fastcox并不支持来估计这些模型的正则化(regularized version),这些基准库将用于拟合elastic-net模型到比例风险损失函数(proportional hazards loss function)。 在本篇中,我们将展示如何构建一个自定义的近端梯度下降算法 (proximal gradient descent algorithm),该算法可以包含时间依存协变量(time-dependent covariates)。
Elastic-net cox model
为了建立符号公式,将每个观察定义为具有以下元组(tuple): ( t i l , t i u , δ i , x i ) (t_i^l, t_i^u, \delta_i, x_i) (til,tiu,δi,xi),在这里 t i l t_i^l til和 t i u t_i^u tiu是第i号病人的协变量的时间区间, δ i \delta_i δi是病人在 t i u t_i^u tiu时刻是否发生时间的指示器, x i x_i xi是病人协变量测量值矢量。cox模型的部分似然( partial likelihood)可以很容易地适用于处理这种时间依存协变量的情况。
Partial Likelihood:
L ( β ) = ∏ i = 1 N ( e x i T β ∑ j ∈ R ( t i ) N e x j T β ) δ i L(\beta)=\prod\limits_{i=1}^N(\dfrac{e^{x_i^T \beta}}{\sum\limits_{j\in{R(t_i)}}^Ne^{x_j^T\beta}})^{\delta_i} L(β)=i=1∏N(j∈R(ti)∑NexjT