【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享-4

简介: 【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享

【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享-3

https://developer.aliyun.com/article/1488340


第3部分:竞争风险

什么是竞争风险?

当对象在事件发生时间设置中发生多个可能的事件时

例子:

  • 复发
  • 因疾病死亡
  • 因其他原因死亡
  • 治疗反应

在任何给定的研究中,所有这些(或其中一些 以及其他)可能都是可能的事件。

所以有什么问题?

事件时间之间未观察到的依赖性是导致需要特殊考虑的基本问题。

例如,可以想象复发的患者更有可能死亡,因此复发时间和死亡时间将不是独立事件。

竞争风险的背景

存在多种潜在结果时的两种分析方法:

  1. 给定事件的特定于原因的危险:这表示未因其他事件而失败的事件中事件的每单位时间的发生率
  2. 给定事件的累积发生率:这表示事件每单位时间的发生率以及竞争事件的影响

这些方法中的每一种都可能仅阐明数据的一个重要方面,而有可能使其他方面难以理解,因此所选的方法应取决于感兴趣的问题。

黑色素瘤数据示例

它包含变量:

  • 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)

image.png

绘制累积发生率

  • image.png

比较组之间的累积发生率

用于组间测试。

例如,Melanoma根据ulcer溃疡的存在与否比较结果。测试结果可以在中找到Tests

ci_ulcer\[\["Tests"\]\]
##        stat           pv df
## 1 26.120719 3.207240e-07  1
## 3  0.158662 6.903913e-01  1

按组绘制累积发生率

image.png

按组绘制累积发生率-手动

_请注意,_我个人发现该ggcompetingrisks功能缺少自定义功能,尤其是与相比ggsurvplot。我通常会自己做图,首先创建cuminc拟合结果的整洁数据集,然后再绘制结果。有关底层代码的详细信息,请参见此演示文稿的

绘制单个事件类型

通常,只有一种类型的事件会引起人们的兴趣,尽管我们仍要考虑竞争事件。在那种情况下,感兴趣的事件可以单独绘制。同样,我首先通过创建cuminc拟合结果的整洁数据集,然后绘制结果来手动执行此操作。有关底层代码的详细信息,请参见此演示文稿的源代码。

image.png

在风险表中添加数字

您可能想将风险表的数量添加到累积发生率图中,而据我所知,没有简单的方法可以做到这一点。请参阅此演示文稿的源代码中的一个示例


image.png

竞争风险回归

两种方法:

  1. 特定原因风险
  • 当前没有事件的受试者中给定事件类型的瞬时发生率
  • 使用Cox回归估算
  1. 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不支持的输出。

image.png

黑色素瘤数据中的竞争风险回归-因果分析

删失所有没有引起关注的对象,在这种情况下是由于黑色素瘤死亡,并且照常使用coxph。因此,现在对因其他原因死亡的患者进行针对特定原因的风险评估方法以应对竞争风险。

image.png

image.png

第4部分:高级主题

涵盖的内容

  • 生存分析的基础知识,包括Kaplan-Meier生存函数和Cox回归
  • 地标分析和时间相关协变量
  • 竞争风险分析的累积发生率和回归

还有什么?

可能会出现很多零碎的东西 :

  1. 评估比例风险假设
  2. 生存率绘制平滑的生存图XX
  3. 有条件的生存

评估比例风险

Cox比例风险回归模型的一个假设是,在整个随访过程中,风险在每个时间点都是成比例的。我们如何检查数据是否符合此假设?

使用cox.zph生存包中的功能。结果有两点:

  1. 每个协变量的效果是否随时间变化的假设检验,以及一次所有协变量的全局检验。
  • 这是通过证明协变量和log(time)之间的交互作用来完成的
  • 显着的p值表示违反了比例风险假设
  1. 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)

image.png

image.png

平滑的生存图-生存分位数

有时可能想根据连续变量来可视化生存估计。求 生存数据的分位数。默认分位数是p = 0.5中位生存期。

  • x代表事件
  • o代表删失
  • 该线是根据年龄的平均存活率的平滑估计
  • image.png

image.png

条件生存

有时,在已经存活了一段时间的患者中产生存活率估计值很有意义。

image.png

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()

image.png

条件生存图

我们还可以根据不同的生存时间长度可视化条件生存数据。

image.png

所得出的曲线在我们每次进行条件调整时都有一条生存曲线。在这种情况下,第一条线是总体生存曲线,因为它是根据时间0进行调节的。

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
22天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
69 3
|
6月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)