第十一章生存分析 在医学研究中有时候需要对病人的生存情况加以评价,例如:肺癌病人术后生存情况或 者是两种不同方案对肺癌病人治疗后的比较。从理论上说,在完全收集到所有病人因肺癌死 亡的确切时间后,可以用术后生存时间这个指标来描述病人的生存状况,并对不同的组别间 加以比较。但在实际随访过程中,由于失访、意外死亡等原因,部分研究对象不能随访到确 切的存活时间。所以,无法以生存时间直接进行统计分析,而需要采取一些特殊的统计方法, 接下来将对此进行详细介绍。 第一节基本概念 1.1生存时间、截尾 例11.1:某医师从2002年1月1日起对6名肺癌患者进行跟踪观察,记录其结局,随 访记录见表11.1 表1116例肺癌患者随访记录 研究号姓名术后开始随访时间终止随访时间 结局 生存天数 (2) (4) 1赵×× 00-01-16 00-09-01 失去联系 2钱 00-01-26 01-03-18局部复发死亡417 2345 01-12-25 车祸死亡 李× 00-02-19 02-10-01 研究终止 王× 00-03-07 00-11-11局部复发死亡249 00-03-20 02-01-24 远处转移死亡675 生存时间( survival time)是指从某起点事件( start point event)开始到被观测对象 出现终点事件( endpoint event)所经历的时间。如从疾病“确诊”到“死亡”;从“治疗 结束”到“复发”;某电子设备从“开始使用”到“出现故障”,等。由此可见,此处的“生 存”是一个广义的概念。根据研究目的不同,可以有不同的“起点时间”和“终点时间”。 生存时间的单位可以用年,月,周,日,甚至时,分,秒等表示。上表中的(6)即为生存时 间,有2种类型 (1).完全数据( complete data):是指被观测对象从观察起点至出现终点事件所经历 的时间。在例11.1中,如果终点事件被设为死于肺癌,那么417、249、675为完全数据 (2).截尾数据( censored data):是指在出现终点事件前,被观测对象的观测过程终 止了。由于被观测对象所提供的信息是“不完全的”,只知道他们的生存时间超过了截尾时 间。例11.1中,229+、689+、955为截尾数据 起点事件( start point event):指研究者根据研究目的开始关心某一事件的起点,如 上面所说的“确诊”、“治疗结束”“开始使用”等等。 终点事件( endpoint event):指研究者根据研究目的所关心的某一事件,如上面所说 的“死亡”、“复发”、“出现故障”等等。需要注意一点,不同的研究目的有不同的终点事件, 如果研究的是肿瘤的局部复发情况,那么死于肿瘤远处转移只能算做截尾,而不是终点事件。 截尾( censor),又称终检、删失,主要有3种情况:①失访:指失去联系,如信访未回 信,上门不见人,电话采访不答理或搬迁未留新地址等原因;②退出:指退出研究,如因其 他非此次研究疾病死亡,临时改变治疗方案而中途退出研究;③终止:指研究时限已到而终 止观察 1.2死亡概率、生存概率
1 第十一章 生存分析 在医学研究中有时候需要对病人的生存情况加以评价,例如:肺癌病人术后生存情况或 者是两种不同方案对肺癌病人治疗后的比较。从理论上说,在完全收集到所有病人因肺癌死 亡的确切时间后,可以用术后生存时间这个指标来描述病人的生存状况,并对不同的组别间 加以比较。但在实际随访过程中,由于失访、意外死亡等原因,部分研究对象不能随访到确 切的存活时间。所以,无法以生存时间直接进行统计分析,而需要采取一些特殊的统计方法, 接下来将对此进行详细介绍。 第一节 基本概念 1.1 生存时间、截尾 例 11.1:某医师从 2002 年 1 月 1 日起对6名肺癌患者进行跟踪观察,记录其结局,随 访记录见表 11.1: 表 11.1 6 例肺癌患者随访记录 研究号 (1) 姓名 (2) 术后开始随访时间 (3) 终止随访时间 (4) 结局 (5) 生存天数 (6) 1 赵×× 00-01-16 00-09-01 失去联系 229+ 2 钱×× 00-01-26 01-03-18 局部复发死亡 417 3 孙×× 00-02-05 01-12-25 车祸死亡 689+ 4 李×× 00-02-19 02-10-01 研究终止 955+ 5 王×× 00-03-07 00-11-11 局部复发死亡 249 6 刘×× 00-03-20 02-01-24 远处转移死亡 675 生存时间(survival time)是指从某起点事件(start point event)开始到被观测对象 出现终点事件(endpoint event)所经历的时间。如从疾病“确诊”到“死亡”;从“治疗 结束”到“复发”;某电子设备从“开始使用”到“出现故障”,等。由此可见,此处的“生 存”是一个广义的概念。根据研究目的不同,可以有不同的“起点时间”和“终点时间”。 生存时间的单位可以用年,月,周,日,甚至时,分,秒等表示。上表中的(6)即为生存时 间,有 2 种类型: (1).完全数据(complete data):是指被观测对象从观察起点至出现终点事件所经历 的时间。在例 11.1 中,如果终点事件被设为死于肺癌,那么 417、249、675 为完全数据。 (2).截尾数据(censored data):是指在出现终点事件前,被观测对象的观测过程终 止了。由于被观测对象所提供的信息是“不完全的”,只知道他们的生存时间超过了截尾时 间。例 11.1 中,229+、689+、955+为截尾数据。 起点事件(start point event):指研究者根据研究目的开始关心某一事件的起点,如 上面所说的“确诊”、“治疗结束”、“开始使用”等等。 终点事件(endpoint event):指研究者根据研究目的所关心的某一事件,如上面所说 的“死亡”、“复发”、“出现故障”等等。需要注意一点,不同的研究目的有不同的终点事件, 如果研究的是肿瘤的局部复发情况,那么死于肿瘤远处转移只能算做截尾,而不是终点事件。 截尾(censor),又称终检、删失,主要有 3 种情况:①失访:指失去联系,如信访未回 信,上门不见人,电话采访不答理或搬迁未留新地址等原因;②退出:指退出研究,如因其 他非此次研究疾病死亡,临时改变治疗方案而中途退出研究;③终止:指研究时限已到而终 止观察。 1.2 死亡概率、生存概率
死亡概率( mortality probability):记为q,是指在某段时间开始时存活的个体在该 段时间内死亡的可能性大小。若无截尾数据,死亡概率的估计公式为: 某人群某时段总死亡例数 (11.1) 该人群同时段期初观察例数 生存概率( survival probability):记为p,是指在某段时间开始时存活的个体至该 时间结束时仍存活的可能性大小。生存概率的公式为 某人群活过某时段例数 (11.2) 该人群同时段期初观察例数 由于生存分析中常存在截尾值,假定失访等截尾事件在观察时段的各个时间点等机会发生 的,故分母改用校正观察例数 校正观察例数=期初观察数-截尾例数 1.3生存率及标准误、生存曲线 生存率( survival rate):用S(tk)表示,是指病人经历t个单位时间后仍存活的概率 若无截尾数据,则 S(tk)=P(T≥tk) 过了t时刻仍存活的例数 (11.3) 观察开始时的总例数 其中t为病人的存活时间,但如果资料中含有截尾数据,分母必须按时段进行校正,此公式 则不再适用,此时生存率的计算公式应为 S(t)=P(T≥tk)=P1P2…Pk (11.4) 其中p1、P2、…、P表示不同时间段的生存概率,可以看出,生存率是多个时段生存概 率的累积,故生存率又称为累积生存概率( cumulative probability of survival)。 生存率标准误的计算公式为 SE(S()=S)∑9 (11.5) i=l p, n 例11.2:某医院对100名恶性肿瘤术后病人进行随访所获得的资料如表11.2: 表11.2某恶性肿瘤100例术后随访资料 术后期初观期内死期内截校正期初死亡生存t+1年生存率 年数察例数亡例数尾例数例数概率概率生存率标准误 d c n=n0-c/2 g=d/n p=l-g S(t+1) SE(S(t+1)) (5) (7) 10 0 0.10000.90000.90000.0300 0.16670.83330.75000.0433 0.22540.77460.58100.0501 0.24490 0 0.0520 31.5 0.44440. 0. 0.0484 10.5 0.66670.33330.08120.0390 (1)为组段,(2)为各组段期初观察例数,(3)、(4)分别为各组段内的死于该恶性肿 瘤例数和截尾例数,(5)为校正期初例数,(6)、(7)分别为各组段的死亡概率和生存概率 计算公式分别为(6)=(3)/(5)、(7)=1-(6),(8)为t+1年生存率,(9)为t+1年生存率的 标准误
2 死亡概率(mortality probability):记为 q,是指在某段时间开始时存活的个体在该 段时间内死亡的可能性大小。若无截尾数据,死亡概率的估计公式为: 该人群同时段期初观察例数 某人群某时段总死亡例数 q = (11.1) 生存概率(survival probability):记为 p,是指在某段时间开始时存活的个体至该 时间结束时仍存活的可能性大小。生存概率的公式为: 该人群同时段期初观察例数 某人群活过某时段例数 p = 1− q = (11.2) 由于生存分析中常存在截尾值,假定失访等截尾事件在观察时段的各个时间点等机会发生 的,故分母改用校正观察例数 校正观察例数=期初观察数 截尾例数 2 1 − 1.3 生存率及标准误、生存曲线 生存率(survival rate):用 S(tk)表示,是指病人经历 tk 个单位时间后仍存活的概率。 若无截尾数据,则 观察开始时的总例数 过了 k时刻仍存活的例数 k k t S(t ) = P(T t ) = (11.3) 其中 t 为病人的存活时间,但如果资料中含有截尾数据,分母必须按时段进行校正,此公式 则不再适用,此时生存率的计算公式应为 k k p p pk S(t ) = P(T t ) = 1 2 (11.4) 其中 1 p 、 2 p 、…、 k p 表示不同时间段的生存概率,可以看出,生存率是多个时段生存概 率的累积,故生存率又称为累积生存概率(cumulative probability of survival)。 生存率标准误的计算公式为 = = k i i i i k k p n q SE S t S t 1 ( ( )) ( ) (11.5) 例 11.2:某医院对 100 名恶性肿瘤术后病人进行随访所获得的资料如表 11.2: 表 11.2 某恶性肿瘤 100 例术后随访资料 术后 年数 t~ (1) 期初观 察例数 n0 (2) 期内死 亡例数 d (3) 期内截 尾例数 c (4) 校正期初 例数 nc=n0-c/2 (5) 死亡 概率 q=d/n (6) 生存 概率 p=1-q (7) t+1 年 生存率 S(t+1) (8) 生存率 标准误 SE(S(t+1)) (9) 0~ 100 10 0 100 0.1000 0.9000 0.9000 0.0300 1~ 90 15 0 90 0.1667 0.8333 0.7500 0.0433 2~ 75 16 8 71 0.2254 0.7746 0.5810 0.0501 3~ 51 12 4 49 0.2449 0.7551 0.4387 0.0520 4~ 35 14 7 31.5 0.4444 0.5556 0.2437 0.0484 5~ 14 7 7 10.5 0.6667 0.3333 0.0812 0.0390 (1)为组段,(2)为各组段期初观察例数,(3)、(4)分别为各组段内的死于该恶性肿 瘤例数和截尾例数,(5)为校正期初例数,(6)、(7)分别为各组段的死亡概率和生存概率, 计算公式分别为(6)=(3)/(5)、(7)=1-(6),(8)为 t+1 年生存率,(9)为 t+1 年生存率的 标准误
在本例中,q1=10/100,p=1-q=90/100,q2=15/90,p2=1-q2=75/90。 由式(11.4)求得2年生存率为S(2)=pp2=(90/100)×(75/90)=75/100=0.75 由式(11.3)求得2年生存率为S(2)=(100-10-15)/100=75/100=0.75 两式求得结果相同,但在继续计算S(3)、S(4)…时,由于式(11.3)不能对截尾数据 进行处理,故不再适用,只能以(11.4)进行计算 生存曲线( survival curve):以时间为横轴,生存率为纵轴,将各个时点的生存率连 接在一起的曲线图。 1.4中位生存期 中位生存期( Median survival time):又称为半数生存期,即当累积生存率为0.5时所 对应的生存时间,表示有且只有50%的个体可以活过这个时间。要注意中位生存期通常不等 于生存时间的中位数(除非在这个时间点之前没有删失值存在)。 第二节生存曲线估计 对于生存曲线的估计,我们介绍常用的2种方法: 1. Kaplan- meter法,又称乘积极限法( Product- Limit method,简称PL法),由 Kaplan-Meier在1958年提出,适用于样本量较小,难以将生存时间按组段划分,此时是利 用t时刻之前各时点上生存概率的乘积来估计在时刻t的生存率,不需要对被估计的资料 分布作任何假设。 例11.3:一组病人的生存时间(日)如下,用 Kaplan- Meier法估计其生存曲线(+代 表截尾)。 5,6+ 为便于说明,将计算过程和结果列在表11.3,其步骤为: (1).将所有生存时间按从小到大排列(t),包括完全和截尾生存时间。 (2).列出各期初暴露病例数(n),它是指在t时刻前仍存活的病例数。 (3).将各期内死亡例数(d)和截尾例数(c)分别写在第(3)、(4)列。 (4).计算各期的死亡概率q,q=d/n,截尾数不参加计算,结果见第(5)列。例如生存时 间为5天时,q=2/9=0.2222 (5).计算各期的生存概率p,p=1-q,例如生存时间为5天时,p=1-0.222=0.7778,计算 结果见第(6)列 (6).计算各t时刻的生存率S(t)。计算t时刻生存率时可以用小于和等于t时刻的各时 点生存概率的乘积得到,计算结果见第(7)列 表11.3 Kaplan- Meier法估计生存率计算表 存活时期初暴露期内死期内截死I 生存 生存 生存率 间(天)病例数亡例数尾例数概率 概率 标准误 g-d/n (S(t)) (1)(2)(3)(4)⑤5)(6)(7)(8) 10 0 0.10000.90000.90000.0949 9 0.22220.77780.70000.1449 0.00001.00000.70000.1449 0.83330.58330.1610 16 0 1.00000.58330.1610 0.25000.75000.43750.1747 0.33330.66670.29170.1 0.0000 1.00000.29170
3 在本例中,q1=10/100,p1=1-q1=90/100,q2=15/90,p2=1-q2=75/90。 由式(11.4)求得 2 年生存率为 S(2)= p1p2=(90/100)×(75/90) =75/100=0.75 由式(11.3)求得 2 年生存率为 S(2)=(100-10-15)/100=75/100=0.75 两式求得结果相同,但在继续计算 S(3)、S(4)…时,由于式(11.3)不能对截尾数据 进行处理,故不再适用,只能以(11.4)进行计算。 生存曲线(survival curve):以时间为横轴,生存率为纵轴,将各个时点的生存率连 接在一起的曲线图。 1.4 中位生存期 中位生存期(Median Survival Time):又称为半数生存期,即当累积生存率为 0.5 时所 对应的生存时间,表示有且只有 50%的个体可以活过这个时间。要注意中位生存期通常不等 于生存时间的中位数(除非在这个时间点之前没有删失值存在)。 第二节 生存曲线估计 对于生存曲线的估计,我们介绍常用的 2 种方法: 1.Kaplan-meier 法,又称乘积极限法(Product-Limit Method,简称 PL 法),由 Kaplan-Meier 在 1958 年提出,适用于样本量较小,难以将生存时间按组段划分,此时是利 用 tk 时刻之前各时点上生存概率的乘积来估计在时刻 tk 的生存率,不需要对被估计的资料 分布作任何假设。 例 11.3:一组病人的生存时间(日)如下,用 Kaplan-Meier 法估计其生存曲线(+代 表截尾)。 3, 5, 5, 6+, 8, 16+, 22, 30, 47+, 71 为便于说明,将计算过程和结果列在表 11.3,其步骤为: (1).将所有生存时间按从小到大排列(t),包括完全和截尾生存时间。 (2).列出各期初暴露病例数(n),它是指在 t 时刻前仍存活的病例数。 (3).将各期内死亡例数(d)和截尾例数(c)分别写在第(3)、(4)列。 (4).计算各期的死亡概率 q, q=d/n,截尾数不参加计算,结果见第(5)列。例如生存时 间为 5 天时,q=2/9=0.2222。 (5).计算各期的生存概率 p, p=1-q,例如生存时间为 5 天时,p=10.2222=0.7778,计算 结果见第(6)列。 (6).计算各 t 时刻的生存率 S(tk)。计算 tk 时刻生存率时可以用小于和等于 tk 时刻的各时 点生存概率的乘积得到,计算结果见第(7)列。 表 11.3 Kaplan-Meier 法估计生存率计算表 存活时 间(天) 期初暴露 病例数 期内死 亡例数 期内截 尾例数 死亡 概率 生存 概率 生存 率 生存率 标准误 t n d c q=d/n p=1-q S(tk) SE(S(tk)) (1) (2) (3) (4) (5) (6) (7) (8) 3 10 1 0 0.1000 0.9000 0.9000 0.0949 5 9 2 1 0.2222 0.7778 0.7000 0.1449 6 7 0 1 0.0000 1.0000 0.7000 0.1449 8 6 1 1 0.1667 0.8333 0.5833 0.1610 16 5 0 1 0.0000 1.0000 0.5833 0.1610 22 4 1 0 0.2500 0.7500 0.4375 0.1747 30 3 1 1 0.3333 0.6667 0.2917 0.1666 47 2 0 1 0.0000 1.0000 0.2917 0.1666
71 0 1.00000.00000.0000 用 Stata软件计算时,数据库结构如下 time I dead 16 0 Stata命令如下 stset time, failure(dead=1) 将该数据库定义为生存资料数据库 sts list 输出各时点生存 输出结果 Beg. Survivor T Total Fail Lost Function Err [95% Conf. Int] 3 10 0 0.90000.09490.47300.98 0.70000.1449 0.32870.8919 7 0.7000 0.1449 0.32870.8919 0.58330.16100.22980.8207 0 0.58330.1610 0.22980.820 0.43750.17470.11870.7256 3 0 0.29170.1666 0.0471 0.6085 0.29170.16660.04710.6085 0 0.0000 输出结果依次为时点、各时点的期初例数、死亡例数、截尾例数、生存函数(生存率) 及其标准误、生存率的95%可信区间。如果需要输出生存函数曲线图,接着输入命令: sts graph, title( Kaplan- Meier法对10名病人的生存率估计) 输出生存曲线 输出结果:
4 71 1 1 0 1.0000 0.0000 0.0000 . 用 Stata 软件计算时,数据库结构如下: time dead 1 3 1 2 5 1 3 5 1 4 6 0 5 8 1 6 16 0 7 22 1 8 30 1 9 47 0 10 71 1 Stata 命令如下: stset time, failure(dead=1) 将该数据库定义为生存资料数据库 sts list 输出各时点生存率 输出结果: Beg. Net Survivor Std. Time Total Fail Lost Function Error [95% Conf. Int.] ------------------------------------------------------------------------------- 3 10 1 0 0.9000 0.0949 0.4730 0.9853 5 9 2 0 0.7000 0.1449 0.3287 0.8919 6 7 0 1 0.7000 0.1449 0.3287 0.8919 8 6 1 0 0.5833 0.1610 0.2298 0.8207 16 5 0 1 0.5833 0.1610 0.2298 0.8207 22 4 1 0 0.4375 0.1747 0.1187 0.7256 30 3 1 0 0.2917 0.1666 0.0471 0.6085 47 2 0 1 0.2917 0.1666 0.0471 0.6085 71 1 1 0 0.0000 . . . ------------------------------------------------------------------------------- 输出结果依次为时点、各时点的期初例数、死亡例数、截尾例数、生存函数(生存率) 及其标准误、生存率的 95%可信区间。如果需要输出生存函数曲线图,接着输入命令: sts graph,title(Kaplan-Meier 法对 10 名病人的生存率估计) 输出生存曲线 输出结果:
Kaplan-Meier survival estimate 0.75 00 analysis time 图11.1 Kaplan- Meier法对10名病人的生存率估计 其中 title(选项要求输出图像的标注。 2.寿命表法(Life- Table method,简称LT法)是通过计数落入时间区间[t-,t)内的失 效和截尾的观察例数来估计该区间上的死亡概率,然后用该区间及其之前各区间上的生存概 率之积来估计S(t)。当样本量较大或者无法准确得知研究结果出现的时间时,可以将各研 究对象的生存时间按某个时间段(年、月等)进行分组计算其生存率。 对例11.2用寿命表法计算生存率,具体计算步骤前面已有叙述,这里主要介绍 stata 的用法。 数据库结构如下 dead 7 0 0 11 此时的数据库中有3个变量,time为生存时间(年),time=n表示该组患者在第n年初随访 到了但是在n+1年初没有随访到。dead是观察结局,dead=1表示死亡,dead=0表示截尾 num为各组频数。 Stata程序如下: use d: \data\ltablel 打开 Itable1数据文件 Itable time dead [ weight=nu 制作寿命表 输出结果 Std Interval Total Deaths Lost Survival Error [95% Conf. Int]
5 Kaplan-Meier survival estimate analysis time 0 20 40 60 80 0.00 0.25 0.50 0.75 1.00 图 11.1 Kaplan-Meier 法对 10 名病人的生存率估计 其中 title()选项要求输出图像的标注。 2.寿命表法(Life-Table Method,简称 LT 法)是通过计数落入时间区间[tk-1,tk)内的失 效和截尾的观察例数来估计该区间上的死亡概率,然后用该区间及其之前各区间上的生存概 率之积来估计 S(tk)。当样本量较大或者无法准确得知研究结果出现的时间时,可以将各研 究对象的生存时间按某个时间段(年、月等)进行分组计算其生存率。 对例 11.2 用寿命表法计算生存率,具体计算步骤前面已有叙述,这里主要介绍 stata 的用法。 数据库结构如下: time num dead 1 0 10 1 2 1 15 1 ┆ ┆ ┆ ┆ 6 5 7 1 7 0 0 0 ┆ ┆ ┆ ┆ 11 4 7 0 12 5 7 0 此时的数据库中有 3 个变量,time 为生存时间(年),time=n 表示该组患者在第 n 年初随访 到了但是在 n+1 年初没有随访到。dead 是观察结局,dead=1 表示死亡,dead=0 表示截尾。 num 为各组频数。 Stata 程序如下: use d:\data\ltable1 打开 ltable1 数据文件 ltable time dead [weight=num] 制作寿命表 输出结果: Beg. Std. Interval Total Deaths Lost Survival Error [95% Conf. Int.] -------------------------------------------------------------------------------