Cox Proportional-Hazards Model.
1. 生存分析
在医学研究、可靠性工程、精算科学等众多领域,我们常常需要分析从某个起始时间点到某个特定“事件”发生所经历的时间长度。这种类型的数据被称为生存数据(Survival Data)或事件时间数据(Time-to-Event Data),而研究和建模这类数据的方法则被称为生存分析(Survival Analysis)。
1.1 生存时间 (Survival Time) 与事件 (Event)
生存时间 (T)是一个非负的随机变量,表示从一个明确定义的起始点(如疾病诊断、手术开始)到终点事件发生所经过的时间。
事件 (Event)是我们感兴趣的终点,例如死亡、疾病复发、设备故障等。它是一个二元指示变量。
1.2 删失 (Censoring)
删失是生存分析区别于标准回归分析的一个核心特征。它指的是我们未能观察到个体的确切生存时间。由于生存数据的特殊性,有时候很难获取对象完整的生存时间,此时数据的标注信息往往是不完整的。
对一组实验,从患者的确诊时间开始观测,每隔一定的时间进行一次随访,直到实验的观测结束。若某一次随访中发现患者死亡,则记录下患者完整的生存时间(非删失 uncensored);若结束观测之后,患者依然没有发证死亡,则无法获取患者确切的生存时间(右删失 Right Censoring);若在随访过程中,丢失了患者的信息(如失去了联系方式),则我们也无法得知患者的生存时间(左删失 Left Censoring),只知道该个体的生存时间大于其最后的随访时间。

1.3 生存函数 (Survival Function)
生存函数 $S(t)$,定义为个体生存时间$T$超过某个特定时间点$t$的概率:
\[S(t) = P(T > t) = \int_{t}^{\infty} f(u) \, du = 1-F(t)\]其中$f$是概率密度函数,$F$是分布函数。$S(t)$是一个非增单调函数,其值域为$[0, 1]$,且$S(0)=1$,$S(\infty)=0$。它直观地描绘了随着时间的推移,群体中存活个体的比例。

1.4 风险函数 (Hazard Function)
风险函数(Hazard Function),也称为风险率(Hazard Rate)或瞬时失效率(Instantaneous Failure Rate),记作$h(t)$。它描述了在时间$t$存活的个体,在下一个极小时间间隔$[t, t+\Delta t)$内发生事件的瞬时概率。其数学定义为:
\[h(t) = \lim_{\Delta t \to 0} \frac{P(t \le T < t + \Delta t | T \ge t)}{\Delta t}\]
风险函数$h(t)$(描述了在t时刻发生事件的“瞬时风险”)与生存函数$S(t)$(描述了“到t时刻还未发生事件”的累积概率)之间存在着密切的数学关系。令$f(t)$为生存时间的概率密度函数,则风险函数等价于概率密度函数除以生存函数:
\[\begin{aligned} h(t) &= \lim_{\Delta t \to 0} \frac{P(t \le T < t + \Delta t | T \ge t)}{\Delta t} \\ &= \lim_{\Delta t \to 0} \frac{P(t \le T < t + \Delta t)}{P(T \ge t)\Delta t} \\ &= \lim_{\Delta t \to 0} \frac{\int_{t}^{t+\Delta t} f(u) \, du}{S(t)\Delta t} \\ &= \lim_{\Delta t \to 0} \frac{f(\xi) \Delta t}{S(t)\Delta t}, \xi \in (t,t+\Delta t) \\ &= \frac{f(t)}{S(t)} \end{aligned}\]2. Cox比例风险模型
1972年,英国统计学家David R. Cox提出了一种半参数回归模型,它能够在不预设基准风险函数具体形式的情况下,评估多个协变量(covariates)对生存风险的影响。这个模型就是Cox比例风险模型。Cox模型是统计学史上引用最高的文章之一。
2.1 模型定义
Cox模型的核心思想是将风险函数$h(t)$分解为两个部分:一个与时间相关但与个体病例无关的基准风险函数(baseline hazard function)$h_0(t)$,和一个与时间无关、仅与患者特征有关、依赖于一组协变量$X = (X_1, X_2, …, X_p)$的比例系数。
对于一个具有协变量向量$X$的个体,其在时间$t$的风险函数$h(t|X)$被建模为:
\[h(t|X) = h_0(t) \exp\left(\sum_{i=1}^{p} \beta_i X_i\right) = h_0(t) \exp(\beta^T X)\]- $h_0(t)$:基准风险函数。它代表了当所有协变量$X_i$都为0时,个体的风险函数。它是一个任意的、非负的时变函数,其形式无需预先指定,这是Cox模型被称为半参数模型(semi-parametric model)的原因。
- $\exp(\beta^T X)$:非时变的风险比例部分。它描述了协变量$X$如何以乘法的方式调整基准风险。$\beta = (\beta_1, \beta_2, …, \beta_p)$是回归系数向量,是模型需要估计的参数。
2.2 比例风险假设 (Proportional Hazards Assumption)
Cox模型之所以被称为“比例风险”模型,是因为它基于一个核心假设:任意两个不同个体之间的风险比(Hazard Ratio, HR)是一个不随时间变化的常数。
考虑两个具有不同协变量向量$X_1$和$X_2$的个体,它们在时间$t$的风险比为:
\[\frac{h(t|X_1)}{h(t|X_2)} = \frac{h_0(t) \exp(\beta^T X_1)}{h_0(t) \exp(\beta^T X_2)} = \exp[\beta^T (X_1 - X_2)]\]可以看到,基准风险函数$h_0(t)$被消去了,风险比仅依赖于协变量的差异,与时间$t$无关。这就是比例风险假设。这个假设是Cox模型有效性的基石,在应用模型后需要对其进行检验。
2.3 回归系数$\beta$的解释
在Cox模型中,系数$\beta_i$的解释是基于风险比(Hazard Ratio, HR)的。考虑一个协变量$X_i$,当其值增加一个单位,而其他协变量保持不变时,新的风险与原始风险之比为:
\[HR = \frac{h(t|X_i+1, ...)}{h(t|X_i, ...)} = \frac{h_0(t)\exp(\beta_i(X_i+1) + ...)}{h_0(t)\exp(\beta_i X_i + ...)} = \exp(\beta_i)\]因此:
- 如果$\beta_i > 0$,则$\exp(\beta_i) > 1$,$X_i$是一个风险因素,其值的增加会导致事件发生的风险增加。
- 如果$\beta_i < 0$,则$\exp(\beta_i) < 1$,$X_i$是一个保护因素,其值的增加会导致事件发生的风险降低。
- 如果$\beta_i = 0$,则$\exp(\beta_i) = 1$,$X_i$对风险没有影响。
$\exp(\beta_i)$即为协变量$X_i$的风险比 (HR)。
3. Cox模型的参数估计:偏似然法
由于基准风险函数$h_0(t)$是未知的,传统的最大似然法无法直接应用。Cox提出了一种称为偏似然法(Partial Likelihood)的方法来估计回归系数$\beta$。$h_0(t)$则可以利用已有的数据使用Kaplan-Meier方法进行估计。
3.1 偏似然函数的构建
偏似然法的核心思想是,不考虑事件发生的具体时间,只考虑在每个事件发生时间点,事件实际发生在特定个体上的条件概率。
假设我们有$n$个个体,其中有$k$个不同的、已观察到的事件发生时间,按升序排列为$t_{(1)} < t_{(2)} < … < t_{(k)}$。 在任意一个事件时间点$t_{(j)}$,假设事件发生在个体$j$上。此时,我们定义一个风险集(Risk Set)$R(t_{(j)})$,它包含了在时间$t_{(j)}$时仍然存活且处于“风险中”的所有个体(包括个体$j$)。
那么,在给定一个事件在时间$t_{(j)}$发生,并且该事件发生在风险集$R(t_{(j)})$中的某一个个体上的条件下,这个事件恰好发生在个体j身上的概率可以表示为:
\[P(\text{事件发生在个体} j | \text{事件在} t_{(j)} \text{发生于} R(t_{(j)})) = \frac{h(t_{(j)}|X_j)}{\sum_{i \in R(t_{(j)})} h(t_{(j)}|X_i)}\]代入Cox模型的定义,我们得到:
\[P= \frac{h_0(t_{(j)}) \exp(\beta^T X_j)}{\sum_{i \in R(t_{(j)})} h_0(t_{(j)}) \exp(\beta^T X_i)} = \frac{\exp(\beta^T X_j)}{\sum_{i \in R(t_{(j)})} \exp(\beta^T X_i)}\]偏似然函数$L(\beta)$就是将所有事件时间点的这种条件概率连乘起来:
\[L(\beta) = \prod_{j=1}^{k} \frac{\exp(\beta^T X_j)}{\sum_{i \in R(t_{(j)})} \exp(\beta^T X_i)}\]下面通过一个患者统计图来解释该目标。U表示非删失的患者数据,S表示删失的患者数据,T表示患者所统计的生存时间或最后存活时间(对删失数据而言)。

针对患者3建立似然函数时,我们希望患者3在观测统计时刻(T=36)死亡的风险最大,而其余的患者在该时刻死亡的风险最小。对于死亡时间小于T=36的患者(1、2、7、8、9)而言,这个概率必然是0。此时$R(t_3)$包括的人群就是患者(4、5、6、10、11、12)。此时最大化该似然函数,即最大化患者3在T=36时刻死亡的概率,而最小化其他患者在该时刻死亡的概率。
3.2 对数偏似然与参数求解
为了计算方便,通常对偏似然函数取对数,得到对数偏似然函数(Log Partial Likelihood)$LL(\beta)$:
\[LL(\beta) = \sum_{j=1}^{k} \left[ \beta^T X_j - \log\left(\sum_{i \in R(t_{(j)})} \exp(\beta^T X_i)\right) \right]\]现在,估计$\beta$的问题就转化为了一个标准的最优化问题:找到一组$\beta$使得$LL(\beta)$最大化。这可以通过牛顿-拉弗森法(Newton-Raphson method)等数值优化算法来求解。上述目标也被称为Cox Loss。
3.3 处理时间并存 (Ties)
在实际数据中,可能会有多个事件在同一时间点发生,这被称为时间并存(Ties)。处理这种情况有多种近似方法,最常用的是Breslow近似和Efron近似。
- Breslow近似:简单地将并存事件的贡献相加,计算简单但可能在并存事件较多时产生偏差。
- Efron近似:对Breslow方法进行了修正,提供了更精确的近似,是大多数统计软件的默认选项。
4. 模型评估与应用
在构建了Cox模型并估计出参数后,需要对其进行评估和解释。
4.1 模型显著性检验
- 似然比检验 (Likelihood Ratio Test):比较包含所有协变量的全模型与不包含任何协变量的零模型(即所有$\beta_i=0$)的对数偏似然。检验统计量$-2[LL(0) - LL(\hat{\beta})]$近似服从自由度为$p$的$\chi^2$分布,用于评估整个模型的显著性。
- Wald检验 (Wald Test):对单个回归系数$\beta_i$进行显著性检验。检验统计量$(\hat{\beta}_i / SE(\hat{\beta}_i))^2$近似服从自由度为1的$\chi^2$分布,其中$SE(\hat{\beta}_i)$是$\beta_i$的标准误。
- Score检验 (Score Test):在零假设($\beta=0$)下评估对数偏似然函数的一阶导数(score function),计算成本较低。
4.2 模型预测能力的评估
一致性指数 (Concordance Index, C-index) 是评估生存模型预测准确性的最常用指标。它衡量了模型预测的风险排序与实际生存时间排序的一致性。C-index的取值范围为0.5到1,0.5表示随机猜测,1表示完美预测。它计算的是所有可比较的患者对中,预测风险高的患者比预测风险低的患者更早发生事件的比例。
4.3 比例风险假设的检验
检验比例风险假设是应用Cox模型后必不可少的一步。常用的方法有:
- Schoenfeld残差检验:这是最经典和最常用的方法。其思想是,如果比例风险假设成立,那么Schoenfeld残差应该与时间无关。通过检验残差与时间的(零)相关性,可以判断假设是否被违背。
- 图形法:例如,绘制log-log生存曲线图。如果对于一个分类协变量的不同水平,其log[-log(S(t))] 曲线相互平行,则表明比例风险假设成立。
如果假设不成立,可以考虑使用含时依变协变量的Cox模型(Time-Dependent Covariate Cox Model)或分层Cox模型(Stratified Cox Model)等扩展模型。