R 的 coxph() 究竟是如何处理重复测量的?

机器算法验证 r 重复测量 生存 cox模型 虚弱
2022-03-01 08:38:53

语境

我试图了解 R 的 coxph() 如何接受和处理主题(或患者/客户,如果您愿意)的重复输入。有人称此为长格式,其他人称其为“重复测量”。

例如,请参阅答案部分中包含 ID 列的数据集:

具有时变协变量的 Cox 模型的最佳软件包

还假设协变量自始至终都是随时间变化的,并且只有一个审查(即事件)变量,它是二进制的。

问题

1) 在上述链接的答案中,如果在对 coxph() 的调用中未将 ID 作为参数给出,结果是否应该与在 coxph() 中包含 cluster(ID) 作为参数相同?

我试图搜索文档,但以下似乎没有明确解决(1): https ://stat.ethz.ch/pipermail/r-help//2013-July/357466.html

2)如果(1)的答案是“否”,那么(数学上)为什么?coxph() 中的 cluster() 似乎根据 pg 上的“cluster”小节寻求主题之间的相关性。20 在

https://cran.r-project.org/web/packages/survival/survival.pdf

3) 模糊的问题:重复测量的 coxph() 与 R 的 frailtypack 回归方法相比如何?

附加物

使用 cluster(ID) 的以下提示:

是否有对数秩测试的重复测量感知版本?

一样:

https://stat.ethz.ch/pipermail/r-help//2013-July/357466.html

GEE 方法:在 coxph 中的模型语句中添加“+ cluster(subject)” 混合模型方法:在 coxme 中的模型语句中添加“+ (1|subject)”。

提前致谢!

2个回答
  1. 包括cluster(ID)不改变参数的点估计。但是,它确实改变了计算标准误差的方式。

    更多细节可以在 Therneau & Grambsch 的书扩展 Cox 模型中找到,第 8.2 章。请注意,在他们的示例中,它们method = "breslow"用作平局的校正,但对于默认值 ( method = "efron"),将使用类似的 se 计算,并在摘要中显示为“robust se”。

  2. 如果使用集群(ID),则对标准误差进行“稳健”估计,并测量受试者之间可能的依赖性(例如,通过标准误差和方差分数)。另一方面,不使用 cluster(ID) 会对每个观察结果施加独立性,并且在数据中假设更多“信息”。用更专业的术语来说,参数的得分函数不会改变,但这个得分的方差会改变。一个更直观的论点是,对 100 个个体的 100 个观察比对 10 个个体(或集群)的 100 个观察提供更多的信息。

  3. 确实模糊。简而言之,+frailty(ID)适合coxph()具有伽马或对数正态随机效应和非参数基线危险/强度的标准脆弱模型。frailtypack使用参数基线(也是具有样条或分段常数函数的灵活版本)并且还适合更复杂的模型,例如相关脆弱性、嵌套脆弱性等。

最后,+cluster()在某种程度上符合 GEE 的精神,因为您从具有独立观察的可能性中获取分数方程,并对标准误差使用不同的“稳健”估计器。

编辑:感谢@Ivan 关于帖子清晰度的建议。

这是survival我发现有用的包小插曲的答案 - 它链接在您链接到的第一个问题的第一个答案中:

具有时变协变量的 Cox 模型的最佳软件包

他们指的是长格式数据设置,或主题重复条目的数据。

这种数据设置的一个常见问题是我们是否需要担心相关数据,因为给定的主题有多个观察结果。答案是否定的,我们没有。原因是这种表示只是一种编程技巧。任何时间点的似然方程只使用任何主题的一个副本,程序每次都挑选出正确的数据行。此规则有两个例外:

  • 当受试者有多个事件时,事件的行在受试者内是相关的,并且需要聚类方差。
  • 当主题以重叠的间隔出现时。然而,这几乎总是一个数据错误,因为它对应于对象的两个副本同时出现在同一阶层中,例如,她可能会在聚会上遇到自己。

他们给出的例子是

fit <- coxph(Surv(time1, time2, status) ~ age + creatinine, data=mydata)

建议如果您提供两次(期初和期末)Surv而不是一次,coxph()将找出其余的。