生存分析及R语言实现(三):Cox模型及R实现

本系列旨在对生存分析及在R中的实践进行介绍,主要侧重理解与应用。由于参考的是英文文献,所以许多名词都直接用了英文,以免翻译有误给大家造成误解。文中错误之处欢迎批评指正。

本文介绍的模型全称为:Cox比例风险回归模型(Cox Proportional Hazards Regression Model),为简便起见,在不引起歧义的情况下我们称之为Cox模型。

目录

  • 1.1 模型建立
    • 1.1.1 模型假设
    • 1.1.2 参数化 λ 0 ( t ) \lambda_0(t) λ0(t)与极大似然估计
    • 1.2.3 R语言求解
  • 1.2 偏似然函数(Partial Likelihood Function)
  • 1.3 Breslow估计
    • 1.3.1 理论推导
    • 1.3.2 R语言求Breslow估计
  • 1.4 残差分析

1.1 模型建立

1.1.1 模型假设

引入 p p p维随机向量 Z ∈ R p Z\in \mathbb{R}^p ZRp,用于表示协变量(解释变量),可能表示我们感兴趣的患者用药情况、性别、年龄等特征。考虑条件危险率函数:
λ ( t ∣ Z ) d t = Pr ⁡ [ t ≤ T < t + d t ∣ T ≥ t , Z ] . \lambda(t|Z)\mathrm{d}t = \Pr[t\leq T λ(tZ)dt=Pr[tT<t+dtTt,Z].

我们之前介绍过生存分析中的模型:
d N ( t ) = I [ X ≥ t ] λ ( t ) d t + d M ( t ) , \mathrm{d}N(t) = \mathbb{I}[X\geq t] \lambda(t)\mathrm{d}t +\mathrm{d}M(t), dN(t)=I[Xt]λ(t)dt+dM(t),
其中 N ( t ) = I [ X ≤ t , δ = 1 ] N(t) = \mathbb{I}[X\leq t,\delta = 1] N(t)=I[Xt,δ=1] M ( t ) M(t) M(t)为鞅残差。

现在我们引入了 Z Z Z,那么 λ ( t ) \lambda(t) λ(t)就变为 λ ( t ∣ Z ) \lambda(t|Z) λ(tZ)Cox模型对其形式作出假设:
λ ( t   ∣   Z )   = λ 0 ( t ) exp ⁡ ( β T Z ) , \lambda(t\ |\ Z)\ = \lambda_0(t) \exp(\beta^T Z), λ(t  Z) =λ0(t)exp(βTZ),
其中 β ∈ R p \beta \in \mathbb{R}^p βRp p p p维参数, λ 0 ( t ) \lambda_0 (t) λ0(t)是基线危险率函数。

该模型很重要的特点是,不同 Z Z Z值对应的 λ ( t ∣ Z = z ) \lambda(t|Z=z) λ(tZ=z)的比例,是不随时间变化的。也就是,考虑 Z = z i Z=z_i Z=zi Z = z j Z=z_j Z=zj这两个不同的小组(这里 z i z_i zi z j z_j zj都是 p p p维向量),则
λ ( t ∣ Z = z j ) λ ( t ∣ Z = z i ) = exp ⁡ ( β T ( z j − z i ) ) \frac{\lambda(t|Z=z_j)}{\lambda(t|Z=z_i)} = \exp (\beta^T (z_j-z_i)) λ(tZ=zi)λ(tZ=zj)=exp(βT(zjzi))

1.1.2 参数化 λ 0 ( t ) \lambda_0(t) λ0(t)与极大似然估计

上文提到的模型中,我们可以参数化 λ 0 ( t ) \lambda_0(t) λ0(t),使之变成一个具体的函数。比如
λ 0 ( t ; η ) = α γ − α t α − 1 , \lambda_0(t;\eta) = \alpha \gamma ^{-\alpha} t^{\alpha-1}, λ0(t;η)=αγαtα1,
其中 η = ( α , γ ) T \eta = (\alpha,\gamma)^T η=(α,γ)T称为冗余参数(nuisance parameter)。

有了具体的 λ 0 ( t ) \lambda_0(t) λ0(t)之后,我们就可以求参数的极大似然估计(MLE)。因为现在模型是基于 Z Z Z,因此我们可以放宽对独立性的限制,仅假设删失时间 C C C和事件发生时间 T T T条件独立,即
C ⊥ T   ∣   Z . C\perp T\ |\ Z. CT  Z.

假设我们观测到一组数据
( X i , δ i , Z i ) ,   i = 1 , ⋯   , n , (X_i,\delta_i,Z_i),\ i=1,\cdots,n, (Xi,δi,Zi), i=1,,n,

可以通过对令分数函数(score function)等于零的方式得到参数 θ = ( β , η ) \theta = (\beta,\eta) θ=(β,η)的极大似然估计。略过中间计算过程,极大似然估计为如下方程的解:

n − 1 ∑ i = 1 n { ∫ 0 ∞ [ Z i T , ∂ ∂ η T log ⁡ λ 0 ( t ; η ) ] T d M t ( t ; θ ) } = 0 n^{-1}\sum_{i=1}^n \{ \int_{0}^\infty [Z_i^T,\frac{\partial}{\partial \eta^T}\log \lambda_0(t;\eta)]^T\mathrm{d}M_t(t;\theta) \} = 0 n1i=1n{ 0[ZiT,ηTlogλ0(t;η)]TdMt(t;θ)}=0

1.2.3 R语言求解

survival包里的coxph函数可用于求Cox模型的参数估计、置信区间等。例如:

library(survival)
mod = coxph(Surv(time, status) ~., data = rats)
summary(mod)

生存分析及R语言实现(三):Cox模型及R实现_第1张图片

1.2 偏似然函数(Partial Likelihood Function)

假设事件只在离散的时刻 t 1 < t 2 < ⋯ < t m t_1t1<t2<<tm时发生,且每个 t j t_j tj只有一个个体有事件发生。用 R ( t j ) = { i : X i ≥ t j } \mathcal{R}(t_j)=\{i:X_i\geq t_j\} R(tj)={ i:Xitj} 代表在 t j t_j tj仍“有风险”的个体数量,也就是 t t t时刻既没有发生outcome event(如死亡,肿瘤)也没有删失的个体数。
那么对于 t j t_j tj时刻而言,每个个体partial likelihood (偏似然,或部分似然)定义为
P L j = Pr ⁡ [ 该 个 体 在 t j 发 生 事 件 ∣ 在 R ( t j ) 中 , t j 时 刻 有 一 人 发 生 事 件 ] PL_j = \Pr[该个体在t_j发生事件|在\mathcal{R}(t_j)中,t_j时刻有一人发生事件] PLj=Pr[tjR(tj)tj]
我们用 Z ( j ) Z_(j) Z(j)表示 t j t_j tj时刻发生事件的个体的解释变量,则
P L j = λ ( t ) j ∣ Z ( j ) d t ∑ i ∈ R ( t j ) λ ( t j ∣ Z i ) d t = exp ⁡ ( β T Z j ) ∑ i ∈ R ( t j ) exp ⁡ ( β T Z i ) PL_j = \frac{\lambda(t)j|Z_(j)\mathrm{d}t}{\sum_{i \in \mathcal{R}(t_j) }\lambda(t_j|Z_i) \mathrm{d}t} = \frac{\exp (\beta^T Z_{j})}{\sum_{i \in \mathcal{R}(t_j) }\exp(\beta^T Z_i)} PLj=iR(tj)λ(tjZi)dtλ(t)jZ(j)dt=iR(tj)exp(βTZi)exp(βTZj)

于是对 n n n组观测 ( X i , δ i , Z i (X_i,\delta_i,Z_i (Xi,δi,Zi,偏似然函数为
P L n ( β ) = ∏ j = 1 m exp ⁡ ( β T Z ( j ) ) ∑ i ∈ R exp ⁡ ( β T Z i ) . PL_n(\beta) = \prod_{j=1}^m \frac{\exp(\beta^TZ_{(j)})}{\sum_{i \in \mathcal{R}} \exp(\beta^TZ_i)}. PLn(β)=j=1miRexp(βTZi)exp(βTZ(j)).

β \beta β的极大偏似然函数估计(Maximum Partial Likelihood Estimation,简称MPLE)为:
β ^ M P L E = a r g m a x P L n ( β ) \hat{\beta}_{MPLE} = \mathrm{argmax} PL_n (\beta) β^MPLE=argmaxPLn(β)

1.3 Breslow估计

1.3.1 理论推导

通过前文的模型我们知道,给定解释变量 Z Z Z后的生存函数 S ( t ) S(t) S(t)可写作:
S ( t ∣ Z = z ; β , Λ 0 ) = exp ⁡ ( − exp ⁡ ( β T z ) Λ 0 ( t ) ) S(t | Z=z;\beta,\Lambda_0) = \exp (-\exp(\beta^Tz)\Lambda_0(t)) S(tZ=z;β,Λ0)=exp(exp(βTz)Λ0(t))
因此我们只需找到 Λ 0 ( t ) \Lambda_0(t) Λ0(t)的估计,就可以估计 S ( t ∣ Z = z ; β , Λ 0 ) 注 意 到 S(t|Z=z;\beta,\Lambda_0) 注意到 S(tZ=z;β,Λ0) E [ d M i ( t ; β , Λ 0 ) ] = 0 , \mathbb{E}[dM_i(t;\beta,\Lambda_0)] = 0, E[dMi(t;β,Λ0)]=0,$于是有
d Λ 0 ( t ) = E [ d N i ( t ) ] E [ I ( X i ≥ t ) ] exp ⁡ ( β T Z i ) \mathrm{d}\Lambda_0(t) = \frac{\mathbb{E}[\mathrm{d}N_i(t)]}{\mathbb{E}[\mathbb{I}(X_i\geq t)]\exp (\beta^T Z_i)} dΛ0(t)=E[I(Xit)]exp(βTZi)E[dNi(t)]
对cumulative hazard function Λ 0 ( t ) \Lambda_0(t) Λ0(t)的Breslow估计即为
Λ ^ 0 ( t ) = ∫ 0 t ∑ i = 1 n d N i ( s ) ∑ i = 1 n I ( X i ≥ s ) exp ⁡ ( β T Z i ^ ) \hat\Lambda_0(t) = \int_0^t\frac{\sum_{i=1}^n \mathrm{d}N_i(s)}{\sum_{i=1}^n \mathbb{I}(X_i \geq s)\exp(\hat{\beta^TZ_i})} Λ^0(t)=0ti=1nI(Xis)exp(βTZi^)i=1ndNi(s)
将其带入 S ( t ∣ Z ; β , Λ 0 ) S(t|Z;\beta,\Lambda_0) S(tZ;β,Λ0)即可得到$\hat S(t|Z;\beta,\Lambda_0) $

1.3.2 R语言求Breslow估计

可以将basehaz函数作用于coxph对象,得到 Λ ^ 0 \hat{\Lambda}_0 Λ^0,其包括timehazard两个变量,其曲线如图:

Lambda0 = basehaz(mod)

plot(stepfun(Lambda0$time,c(0,Lambda0$hazard)), do.points = FALSE,
     xlab = 'T',ylab = 'Baseline cumulative hazard function', main = 'Breslow Estimates of Baseline Cumulative Hazard Function')

生存分析及R语言实现(三):Cox模型及R实现_第2张图片

1.4 残差分析

这里我们考虑此前提及的鞅残差(Martingale Residual)。与普通线性回归模型类似,如果数据满足Cox模型假设的话,鞅残差应当是随机分布在0左右,没有明显的趋势或形状。在R中可以用resid作用在coxph对象上获取残差:

mod = coxph(Surv(time,status)~ph.ecog+age, data = lung)
martingale.resid = resid(mod,type = 'martingale')

你可能感兴趣的:(R语言,统计学,生存分析,其他)