【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享-3
https://developer.aliyun.com/article/1488340
第3部分:竞争风险
什么是竞争风险?
当对象在事件发生时间设置中发生多个可能的事件时
例子:
- 复发
- 因疾病死亡
- 因其他原因死亡
- 治疗反应
在任何给定的研究中,所有这些(或其中一些 以及其他)可能都是可能的事件。
所以有什么问题?
事件时间之间未观察到的依赖性是导致需要特殊考虑的基本问题。
例如,可以想象复发的患者更有可能死亡,因此复发时间和死亡时间将不是独立事件。
竞争风险的背景
存在多种潜在结果时的两种分析方法:
- 给定事件的特定于原因的危险:这表示未因其他事件而失败的事件中事件的每单位时间的发生率
- 给定事件的累积发生率:这表示事件每单位时间的发生率以及竞争事件的影响
这些方法中的每一种都可能仅阐明数据的一个重要方面,而有可能使其他方面难以理解,因此所选的方法应取决于感兴趣的问题。
黑色素瘤数据示例
它包含变量:
time
生存时间以天为单位,可能经过删失。status
1例死于黑色素瘤,2例存活,3例因其他原因死亡。sex
1 =男性,0 =女性。age
年岁。year
操作。thickness
肿瘤厚度(毫米)。ulcer
1 =存在,0 =不存在。
黑色素瘤数据的累积发生率
在竞争风险的背景下估算累积发生率。
## Estimates and Variances: ## $est ## 1000 2000 3000 4000 5000 ## 1 1 0.12745714 0.23013963 0.30962017 0.3387175 0.3387175 ## 1 3 0.03426709 0.05045644 0.05811143 0.1059471 0.1059471 ## ## $var ## 1000 2000 3000 4000 5000 ## 1 1 0.0005481186 0.0009001172 0.0013789328 0.001690760 0.001690760 ## 1 3 0.0001628354 0.0002451319 0.0002998642 0.001040155 0.001040155
绘制累积发生率-基数R
生成 默认值的基本图。
plot(ci_fit)
绘制累积发生率
比较组之间的累积发生率
用于组间测试。
例如,Melanoma
根据ulcer
溃疡的存在与否比较结果。测试结果可以在中找到Tests
。
ci_ulcer\[\["Tests"\]\]
## stat pv df ## 1 26.120719 3.207240e-07 1 ## 3 0.158662 6.903913e-01 1
按组绘制累积发生率
按组绘制累积发生率-手动
_请注意,_我个人发现该ggcompetingrisks
功能缺少自定义功能,尤其是与相比ggsurvplot
。我通常会自己做图,首先创建cuminc
拟合结果的整洁数据集,然后再绘制结果。有关底层代码的详细信息,请参见此演示文稿的
绘制单个事件类型
通常,只有一种类型的事件会引起人们的兴趣,尽管我们仍要考虑竞争事件。在那种情况下,感兴趣的事件可以单独绘制。同样,我首先通过创建cuminc
拟合结果的整洁数据集,然后绘制结果来手动执行此操作。有关底层代码的详细信息,请参见此演示文稿的源代码。
在风险表中添加数字
您可能想将风险表的数量添加到累积发生率图中,而据我所知,没有简单的方法可以做到这一点。请参阅此演示文稿的源代码中的一个示例
竞争风险回归
两种方法:
- 特定原因风险
- 当前没有事件的受试者中给定事件类型的瞬时发生率
- 使用Cox回归估算
- Subdistribution子分布风险
- 给定类型事件在没有经历过此类事件的受试者中的瞬时发生率
- 使用Fine-Gray回归估算
黑色素瘤数据中的竞争风险回归-子分布风险法Subdistribution
假设我们有兴趣研究年龄和性别对黑色素瘤死亡的影响,而其他原因的死亡则是竞争事件。
crr
需要指定协变量作为矩阵- 如果 关注多个事件,则可以使用
failcode
选项请求其他事件的结果,默认情况下会返回failcode = 1
shr_fit
## convergence: TRUE ## coefficients: ## sex age ## 0.58840 0.01259 ## standard errors: ## \[1\] 0.271800 0.009301 ## two-sided p-values: ## sex age ## 0.03 0.18
在上一个示例中,sex
和和age
均被编码为数字变量。如果存在字符变量,则必须使用model.matrix
格式化来自crr的结果
或当前crr
不支持的输出。
黑色素瘤数据中的竞争风险回归-因果分析
删失所有没有引起关注的对象,在这种情况下是由于黑色素瘤死亡,并且照常使用coxph
。因此,现在对因其他原因死亡的患者进行针对特定原因的风险评估方法以应对竞争风险。
第4部分:高级主题
涵盖的内容
- 生存分析的基础知识,包括Kaplan-Meier生存函数和Cox回归
- 地标分析和时间相关协变量
- 竞争风险分析的累积发生率和回归
还有什么?
可能会出现很多零碎的东西 :
- 评估比例风险假设
- 生存率绘制平滑的生存图XX
- 有条件的生存
评估比例风险
Cox比例风险回归模型的一个假设是,在整个随访过程中,风险在每个时间点都是成比例的。我们如何检查数据是否符合此假设?
使用cox.zph
生存包中的功能。结果有两点:
- 每个协变量的效果是否随时间变化的假设检验,以及一次所有协变量的全局检验。
- 这是通过证明协变量和log(time)之间的交互作用来完成的
- 显着的p值表示违反了比例风险假设
- Schoenfeld残差图
- 偏离零坡度线的证据表明违反了比例风险假设
print(cz)
## rho chisq p ## sex 0.1236 2.452 0.117 ## age -0.0275 0.129 0.719 ## GLOBAL NA 2.651 0.266 `````` plot(cz)
平滑的生存图-生存分位数
有时可能想根据连续变量来可视化生存估计。求 生存数据的分位数。默认分位数是p = 0.5
中位生存期。
- x代表事件
- o代表删失
- 该线是根据年龄的平均存活率的平滑估计
条件生存
有时,在已经存活了一段时间的患者中产生存活率估计值很有意义。
Zabor, E., Gonen, M., Chapman, P., & Panageas, K. (2013). Dynamic prognostication using conditional survival estimates. Cancer, 119(20), 3589-3592.
条件生存估计
让我们将生存期定为6个月
map_df( prob_times, ~conditional\_surv\_est( basekm = fit1, t1 = 182.625, t2 = .x) ) %>% mutate(months = round(prob_times / 30.4)) %>% select(months, everything()) %>% kable()
条件生存图
我们还可以根据不同的生存时间长度可视化条件生存数据。
所得出的曲线在我们每次进行条件调整时都有一条生存曲线。在这种情况下,第一条线是总体生存曲线,因为它是根据时间0进行调节的。