生存分析与比例风险回归:从理论到应用
1. 生存分析中的对数秩检验
生存分析是统计学中用于研究事件发生时间的重要方法。对数秩检验是比较两条生存曲线最古老且最常用的方法之一,它属于非参数检验。其原假设是两组受试者来自同一总体,备择假设是总体生存曲线不同。
1.1 SAS程序示例
以下是一个用于比较急性髓系白血病(AML)数据中两组缓解时间的SAS程序:
data;
input surv cens group;
datalines;
5 1 0
5 1 0
. . .
45 1 0
9 1 1
13 1 1
13 0 1
. . .
161 0 1
run;
proc print;
/* We are in this habit by now */
run;
proc lifetest plots =(s); /* plots=(s) draws the survival curve */
time surv * cens(0);
strata group; /* Compare the survival curves of two groups */
run;
在这个程序中,
surv
表示生存时间,
cens
是删失变量(
0
表示删失观测),
group
表示患者所属的组(对照组或持续治疗组)。程序会计算比较两组的p值,
plots=(s)
选项会绘制生存曲线。
1.2 对数秩检验原理
对数秩检验是对一系列2×2列联表中观察频数和期望频数的比较。每当两组患者中任一发生事件时,就会构建一个2×2列联表。例如,在第23周时,两组各有一个事件发生,此时治疗维持组有6名患者处于风险中,非维持组有7名患者处于风险中,对应的2×2列联表如下:
| | 治疗维持组 | 非维持组 |
| — | — | — |
| 事件 | 1 | 1 |
| 无事件 | 5 | 6 |
| 处于风险的患者 | 6 | 7 |
对数秩统计量基于公式 $\sum_{i}(o_{i}-e_{i})$,其中 $o_{i}$ 是每个2×2列联表左上角的观察事件数,$e_{i}$ 是在独立原假设下的相应期望频数。在原假设下,即总体生存曲线相同,事件在两组中独立发生,对数秩统计量应接近零。远离零的值表明在独立模型下,一组的事件数过多或过少,这是一个双侧检验。
此外,对数秩统计量还需通过其标准差进行标准化,在
proc lifetest
中会自动完成此操作,并给出p值。例如,在某些数据中,p值为0.0653,表明有一定的统计证据表明两条生存曲线存在差异。
除了对数秩检验,还有其他变体,如Wilcoxon检验,它在求和时会给较早的事件时间赋予更多权重。Wilcoxon检验的p值为0.0989,与对数秩检验提供的关于生存曲线差异的证据量大致相同。
2. 生存分析中的实际问题与思考
2.1 删失问题
在生存分析中,一个难以回答的问题是删失患者退出研究是否与他们的结局有关。例如,他们是因为病情好转而离开,还是因为治疗无效而放弃?一个重要的假设是删失与最终生存时间无关,但有时我们无法确定这个答案。
2.2 生存曲线比较的难题
当生存曲线交叉时,对数秩检验只能告诉我们曲线是否不同,但无法指出哪条曲线更好,这需要我们自己做出艰难的决策。
2.3 实际案例分析
- 胆管癌治疗 :胆管癌是一种严重的疾病,大多数患者在确诊后一年内死亡。一组患者被随机分为两组,一组接受放疗和5 - 氟尿嘧啶(5 - FU)治疗,另一组接受安慰剂治疗。比较两组生存曲线的形状是否有差异,哪一组有生存优势是我们关注的问题。同时,当积极治疗效果并不比不治疗好很多时,给对照组使用安慰剂是否符合伦理也是我们在医学研究中需要考虑的难题。
-
百岁老人的生存
:研究百岁老人的生存数据可以帮助我们探讨人类寿命的极限。以下是一组关于百岁老人生存情况的数据:
| 最后生日年龄 | 处于风险的人数 | 死亡人数 | 删失人数 |
| — | — | — | — |
| 100 | 52,947 | 20,845 | 2256 |
| 101 | 29,846 | 12,213 | 1317 |
| 102 | 16,316 | 6799 | 716 |
| 103 | 8801 | 3852 | 392 |
| 104 | 4557 | 2030 | 193 |
| 105 | 2334 | 1169 | 103 |
| 106 | 1062 | 500 | 63 |
| 107 | 499 | 271 | 9 |
| 108 | 219 | 129 | 16 |
| 109 | 74 | 46 | 1 |
| 110 | 27 | 24 | 0 |
| 111 | 3 | 2 | 0 |
| 112 | 1 | 1 | 0 |
根据这些数据构建生存曲线,我们会发现生存曲线下降很快。思考是否应该对生存比例轴取对数,以及事件发生概率随时间的变化趋势,这些概率可以估计危险函数,对后续建模很重要。同时,我们也会思考是否能从这些数据中估计人类寿命的极限,以及是否可以在不进行外推的情况下完成估计。
3. 比例风险回归
生存分析的很多术语可以追溯到17世纪的荷兰早期贸易商。当时,为了分散长途贸易中的风险,催生了保险业。生存分析借鉴了很多人寿保险的术语,精算师会评估风险并为保险公司设定费率。
3.1 危险函数
危险函数(也称为失败率)是一个条件概率,它表示在某一时刻,一个尚未发生事件的个体在下一时刻发生事件的概率。例如,人寿保险销售人员想知道一个人在年初存活的情况下,在接下来一年死亡的概率。
危险函数的数学定义为:$hazard(t)=\lim_{\Delta\rightarrow0}\frac{Pr[event\ happens\ between\ t\ and\ t + \Delta]}{\Delta\times Pr[event\ has\ not\ happened\ by\ time\ t]}$。
直观上,危险函数值大意味着事件很可能很快发生,生存曲线下降得更快;反之,生存曲线下降缓慢则危险函数值低。需要注意的是,危险函数不是我们活到某个年龄的概率,而是在当前时刻之后的一个小时间段内发生事件的概率。
人类一生的危险函数在不同年龄段有不同的表现。例如,婴儿期危险函数较高,随后下降,在10 - 11岁左右达到最低,之后随着年龄增长,由于各种疾病风险增加,危险函数又上升。
3.2 比例风险回归模型
比例风险回归模型假设每个个体的危险函数是一个共同的基线危险函数的常数倍。即第 $i$ 个个体的危险函数 $h_{i}(t)=C_{i}h(t)$,其中 $C_{i}$ 是一个正数,取决于第 $i$ 个个体的风险因素,且不随时间变化,基线危险函数 $h(t)$ 对所有个体相同。
当 $C_{i}>1$ 时,表明该个体的事件发生风险比基线危险函数描述的风险高;当 $0 < C_{i}<1$ 时,表明风险降低。
比例风险回归(有时也称为Cox回归)通过协变量来建模 $C_{i}$。通常假设一个对数链接函数:$\log C_{i}=\beta_{1}x_{1}+\cdots+\beta_{k}x_{k}$,其中 $\beta_{1},\cdots,\beta_{k}$ 是由软件估计的回归系数。
例如,如果 $\beta_{1}$ 为正,增加 $x_{1}$ 的值会导致危险函数增加,相应的生存时间或事件发生时间会缩短。这与我们的直觉有些相反,因为我们建模的是生存时间的危险函数,而不是生存时间本身,危险函数越大,生存时间越短。在SAS中,可以使用
proc phreg
进行比例风险回归分析。
综上所述,生存分析和比例风险回归在医学、保险等多个领域都有重要的应用。对数秩检验可以帮助我们比较不同组的生存曲线,而比例风险回归则可以进一步考虑协变量对生存时间的影响。在实际应用中,我们需要综合考虑各种因素,如删失问题、伦理问题等,以做出合理的决策。
生存分析与比例风险回归:从理论到应用
4. 比例风险回归的应用与操作流程
4.1 比例风险回归在SAS中的操作
在SAS中进行比例风险回归分析,我们使用
proc phreg
过程步。以下是一个简单的示例,假设我们有一些生存数据,包含生存时间
surv
、删失变量
cens
以及一些协变量
x1
、
x2
等。
data survival_data;
input surv cens x1 x2;
datalines;
10 1 2 3
15 0 1 4
20 1 3 2
...
;
run;
proc phreg data = survival_data;
model surv*cens(0) = x1 x2;
run;
在上述代码中:
-
data survival_data
:创建一个名为
survival_data
的数据集,输入生存时间、删失变量和协变量的数据。
-
proc phreg data = survival_data
:调用
phreg
过程步,并指定使用
survival_data
数据集。
-
model surv*cens(0) = x1 x2
:定义模型,
surv*cens(0)
表示生存时间和删失变量,
x1
和
x2
是协变量。
4.2 操作流程总结
下面是在SAS中进行比例风险回归分析的详细操作流程:
1.
数据准备
:确保数据集中包含生存时间变量、删失变量以及需要分析的协变量。
2.
数据输入
:使用
data
步将数据输入到SAS中。
3.
调用
proc phreg
:使用
proc phreg
过程步进行比例风险回归分析。
4.
定义模型
:在
model
语句中指定生存时间、删失变量和协变量。
5.
运行分析
:执行
run
语句,SAS会输出回归结果,包括回归系数、标准误、p值等。
5. 生存分析与比例风险回归的综合应用案例
5.1 案例背景
假设我们要研究某种疾病患者的生存情况,考虑患者的年龄、性别、治疗方式等因素对生存时间的影响。我们收集了一组患者的数据,包含生存时间、删失情况以及上述协变量。
5.2 数据整理
首先,我们将数据整理成适合分析的格式,如下表所示:
| 患者编号 | 生存时间(天) | 删失情况(1 = 事件发生,0 = 删失) | 年龄(岁) | 性别(1 = 男,0 = 女) | 治疗方式(1 = A治疗,0 = B治疗) |
|---|---|---|---|---|---|
| 1 | 120 | 1 | 55 | 1 | 1 |
| 2 | 200 | 0 | 45 | 0 | 0 |
| 3 | 150 | 1 | 60 | 1 | 1 |
| … | … | … | … | … | … |
5.3 分析步骤
- 数据输入 :将上述数据输入到SAS中。
data patient_data;
input id surv cens age gender treatment;
datalines;
1 120 1 55 1 1
2 200 0 45 0 0
3 150 1 60 1 1
...
;
run;
-
对数秩检验
:使用
proc lifetest进行对数秩检验,比较不同治疗方式下的生存曲线。
proc lifetest plots =(s) data = patient_data;
time surv*cens(0);
strata treatment;
run;
-
比例风险回归分析
:使用
proc phreg进行比例风险回归分析,考虑年龄、性别和治疗方式等协变量。
proc phreg data = patient_data;
model surv*cens(0) = age gender treatment;
run;
5.4 结果解读
- 对数秩检验结果 :如果p值小于设定的显著性水平(如0.05),则表明不同治疗方式下的生存曲线存在显著差异。
- 比例风险回归结果 :回归系数的正负和大小表示协变量对生存时间的影响方向和程度。例如,如果年龄的回归系数为正,说明年龄越大,患者的危险函数越高,生存时间越短。
6. 总结与展望
生存分析和比例风险回归是研究事件发生时间的重要统计方法。对数秩检验可以帮助我们比较不同组的生存曲线,而比例风险回归则可以进一步考虑协变量对生存时间的影响。在实际应用中,我们需要注意删失问题、生存曲线交叉的解读以及伦理问题等。
未来,随着数据量的不断增加和数据分析技术的不断发展,生存分析和比例风险回归将在医学、保险、社会学等多个领域发挥更加重要的作用。例如,在精准医学中,我们可以利用比例风险回归模型预测患者的生存时间,为个性化治疗提供依据;在保险行业,精算师可以使用这些方法评估风险,制定更加合理的保险费率。
通过不断深入研究和应用这些方法,我们可以更好地理解事件发生的规律,为决策提供更加科学的依据。
以下是一个简单的mermaid流程图,展示了生存分析和比例风险回归的主要步骤:
graph LR
A[数据准备] --> B[对数秩检验]
A --> C[比例风险回归分析]
B --> D[生存曲线比较]
C --> E[协变量影响分析]
D --> F[结果解读]
E --> F
这个流程图清晰地展示了生存分析和比例风险回归的主要流程,从数据准备开始,分别进行对数秩检验和比例风险回归分析,最后进行结果解读。通过这种方式,我们可以系统地分析生存数据,挖掘其中的信息。
超级会员免费看
16

被折叠的 条评论
为什么被折叠?



