“状态”取决于“时间”的累积危险函数

机器算法验证 r 回归 cox模型 卡普兰迈尔
2022-03-24 07:35:43

这个问题与我之前在这里讨论过的数据集有关。

我试图确定治疗是否不仅会影响患者去看医生的次数,还会影响伤口愈合需要多长时间。两者本质上是相互关联的。

现在,由于审查,队列的结构随着时间的推移而变化;当伤口愈合时,患者不必去看医生,而留在队列中的是那些愈合时间更长,因此就诊次数更多的人。由于对数据的这种“直观”解释,我认为 cox 比例风险模型(下面的问题)和/或“逆”卡普兰-迈尔曲线可以很好地显示初始治疗如何影响结果。

首先,我查看了所有患者的中位和平均访问次数,大约是 3 次。然后我将整个队列分为需要次就诊和次就诊的患者。然后我在 R 中使用了以下函数>33

library(survival)
km <- km(Surv(Time, Visits>3)~Treatment, data=mydata)
plot(km, fun="event")

这产生了以下情节 公里图

然后我想对 coxph 危害模型做同样的事情,但我意识到它的解释有点不稳定,因为治疗 2 导致低 HR,让你的头脑清醒是一项任务,老实说我不认为是对的,因为我正在尝试查看累积危害。

R中使用的代码是:

cox <- coxph(Surv(Time, Visits>3)~Treatment, data=mydata)
summary(cox)
cox(formula = Surv(Time, Visits>3) ~ Treatment, data=mydata)

  n= 4302, number of events= 1514 
   (41 observations deleted due to missingness)

                                   coef exp(coef) se(coef)      z Pr(>|z|)    
Treatment 2                    -0.36705   0.69278  0.05318 -6.902 5.12e-12 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                               exp(coef) exp(-coef) lower .95 upper .95
Treatment 2                       0.6928      1.443    0.6242    0.7689

Concordance= 0.541  (se = 0.008 )
Rsquare= 0.011   (max possible= 0.99 )
Likelihood ratio test= 48.43  on 1 df,   p=3.419e-12
Wald test            = 47.64  on 1 df,   p=5.119e-12
Score (logrank) test = 48.13  on 1 df,   p=3.986e-12

所以我想知道

  • R中是否有累积风险函数?
  • 是否可以根据时间相关变量将患者分为两组?
  • 您将如何尝试实际解释(以“外行术语”)由该模型产生的风险比?
  • 我完全错了吗?

为您的意见和帮助喝彩。

2个回答

目前我不会就如何解决这个问题给你一个完整的答案,但我想提醒你数据集中存在一个非常严重的统计问题。

标准生存分析方法(例如标准 KM 曲线、Cox PH 模型和 aft 模型)都假设审查与事件时间无关。但您的数据似乎并非如此!早期事件增加了被审查的可能性这一事实在某种程度上违反了这一假设。

除非我遗漏了有关研究设计的某些内容(完全可能......),否则您将拥有不可忽略的缺失数据。因此,您能做的最好的事情就是建立敏感性分析。不过,这不是一个简单的任务。

我不知道我是否很好地理解了您的问题,但这是我对此的看法……根据我对真实数据的经验,即使与健康数据无关,我通常也不喜欢处理 cox 模型,因为我从来没有遇到了一个具有比例风险的案例。我一直在数据面前,随着时间的推移,危险率根本不是恒定的。

我采用的解决方案基本上是 AFT(加速故障时间)模型,如果您不熟悉,它们是参数回归模型。

我在名为 rms 的 excelent 包中同时使用了 survreg 和 psm 系列函数(基于 survreg)。在那里,您将能够找到与生存对象相关的函数,以计算您为模型选择的参数函数的风险比、分位数、均值等。

即使考虑到所有这些,据我所知,还有一个重要的改进建模事件的领域,其中理论分布不能很好地拟合数据(例如时间的多模态分布),这需要几乎手工建模策略来拟合好的模型.