反复事件分析

机器算法验证 r 生存
2022-03-22 03:08:07

我想模拟患者就诊。我的假设是:

  1. 患者会到医院就诊,直到他们完全停止就诊。我不知道他们的最后一次访问是不是最后一次。

  2. 患者每隔一段时间就诊。这些间隔因患者而异,但对于患者而言大致相同。

我整天都在搜索和阅读,我的头快要爆炸了,所以我决定问有什么方法可以解决这个问题。

我最好的猜测是某种生存分析,看起来生存回归支持重复发生的事件。问题是有多种方法可以做到这一点,我不知道该使用哪一种。

我试图从模型中得到什么:

  1. 考虑到他上次就诊的时间,患者完全康复的可能性。
  2. 患者在 T 期间内的就诊次数。

我可以用一个回归来建模吗?哪一个?

1个回答

要做出的主要决定是关于您计划使用的时间尺度是从重复事件过程的起源(如一些诊断或一些干预,或出生)开始的时间,还是两次访问之间的时间?这两种方法称为日历时间和间隔时间。作为一般规则,回答其中一个的不一定回答另一个。

对于日历时间,规范框架是这样的:每个人都有一个计数过程,它表示到时间的访问次数。这个过程的强度表示为,它必须满足某些条件,但在大多数情况下,您可以将其视为经典生存分析中的风险函数。通常的做法是采用诸如类的形式。在这种情况下是自起源以来的时间。对于事件发生在和后续直到的个人,您可以估计像N(t)tλ(t)λ(t|xi)=λ0(t)eβxitt1<t2<...tnτ>tnR通过采取

coxph(Surv(tstart, tstop, status) ~ x) with tstart = c(0, t_1 ... t_n), tstop = c(t_1, ... t_n, tau)and status = c(1, 1, 1 ... 0)and status 为 1 表示 whentstop对应一个事件,tau对应于跟进的结束。您还应该+cluster(id)在公式中使用规范来获得正确的标准误差。

该模型意味着给定时期内的事件数量是泊松分布,期望类似于累积风险。所以从某种意义上说,回答这类问题真的很容易。(ta,tb)tatbλ(t)dt

很酷的是,您可以轻松地将称为脆弱的随机效应与规范结合起来+frailty(id)这经常用作方差减少技术。您也可以将其用于预测,尽管这可能需要更多的工作和思考。

第二种选择是使用间隔时间尺度。间隔将被定义为tstop - tstart从日历时间案例开始。在这种情况下,模型类似于其中是自上次访问以来的时间。如果某个人的差距是,那么您将 再次像以前一样使用 a和状态变量来拟合它。本质上,这与聚类生存数据完全相同。ϕ(w|xi)=ϕ0(w)eβxiwgaps = c(w_1 ... w_n)coxph(Surv(gaps, status) ~ x)+cluster(id)

该模型意味着个人在每次访问后都会“重新启动”。因此,很容易预测“生存”概率(即一段时间内不再访问的概率)。你可以做一些数学运算来看看,假设一个人“存活”了一段时间,那么存活的条件是什么。

在这里,您也可以使用该+frailty选项来考虑个人异质性。


通常使用间隔时间并包含一些协变量,例如先前的事件数(或日志(先前的事件数)),或者对先前的事件数进行分层,以便在第一次之间的时间以及第二次访问,第二次和第三次等。但是,在这里您应该能够真正捍卫自己的选择,因为您实际上是在更改模型的时间尺度。ϕ0


一般来说,使用日历时间方法,您可以快速了解事件在某个时间窗口内的分布,而使用间隙时间尺度,您可以轻松了解间隙本身的分布,但您无法轻松获得最佳两个世界,至少不是很好的封闭形式(虽然你可以通过模拟来实现很多事情)。两者一致的唯一时间是当(或)是恒定的。在这种情况下,任何时间间隔内的事件数都是泊松(具有相同的期望),并且差距遵循指数分布。这通常被视为一个非常强的假设。λ0ϕ0


这本可以说是分析反复事件的最佳入门书那里的作者强调,使用哪个时间尺度的决定可能很大程度上取决于手头的问题。他们的一般观点似乎是,对于不改变过程本身的事件事件,日历时间是最有用的(如汽车保修维修、心肌梗塞)。另一方面,当您想要预测下一个事件的时间时,间隔时间尺度最有用,并且在每个事件中感兴趣的单位都有一些干预(如汽车维修或一些移植)时最自然。