gpt4 book ai didi

r - 使用 'tmerge' 包中的 'survival' 向生存数据添加时变协变量

转载 作者:行者123 更新时间:2023-12-04 11:53:49 47 4
gpt4 key购买 nike

我正在尝试使用生存包中的 tmerge 将几个时间相关协变量添加到数据集以进行生存分析。我的意思是按照主题的 vignette 中的建议按顺序添加每个,但是第一次添加的输出没有按我的预期工作。

更具体地说,我有一个简单的 data.frame,其中包含个人(组织)的 ID 和组织停止事件之前的天数(年龄)。第二个 data.frame 具有 id 和组织经历“过渡”事件之前的天数。并非所有组织都会经历转换,因此并非所有组织都存在于第二个 data.frame 中。

在第一次调用 tmerge 时,我以包使用的格式格式化第一个 data.frame。在第二个中,我尝试添加一个变量来计算组织经历的转变次数。对于大多数组织,结果如我所料,但对于少数组织而言,结果没有意义,我也没有明显的原因导致失败。

data.frames 很小,所以我将它们与下面的代码一起发布。

ages <- structure(list(id = c(1L, 2L, 5L, 6L, 9L, 10L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 20L, 21L, 24L, 26L, 27L, 28L, 29L, 30L, 31L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 42L, 45L, 46L, 43L, 48L, 49L, 50L, 51L, 52L, 54L, 55L, 57L, 58L, 59L, 60L, 61L, 62L, 63L, 64L, 65L, 66L, 68L, 69L, 70L, 71L, 72L, 73L, 74L, 75L, 8L, 19L, 22L, 23L, 33L, 41L), age = c(13668, 21550, 15249, 21550, 16045, 21550, 14976, 14976, 6574, 21550, 4463, 16927, 16927, 15706, 4567, 21306, 17235, 22158, 19692, 17632, 17597, 4383, 5811, 7704, 5063, 17351, 17015, 16801, 4383, 5080, 13185, 12604, 19784, 5310, 15369, 13239, 1638, 21323, 10914, 21262, 7297, 17214, 17508, 14199, 14062, 2227, 8434, 4593, 14429, 21323, 4782, 10813, 2667, 2853, 5709, 3140, 12237, 7882, 21550, 15553, 16466, 16621, 19534, 21842)), .Names = c("id", "age"), row.names = c(NA, 64L), class = "data.frame")
ages1 <- tmerge(ages, ages, id=id, tstop=age)
transitions <- structure(list(id = c(2L, 2L, 6L, 8L, 10L, 19L, 22L, 23L, 24L, 31L, 33L, 41L, 43L, 43L, 52L, 55L, 66L), transition = structure(c(18993, 13668, 15249, 15706, 15887, 11609, 4023, 9316, 16193, 1461, 4584, 17824, 3713, 11261, 16818, 10670, 15479), class = "difftime", units = "days")), .Names = c("id", "transition"), row.names = c(3L, 4L, 7L, 8L, 11L, 20L, 25L, 27L, 28L, 35L, 38L, 47L, 49L, 51L, 59L, 61L, 73L), class = "data.frame")
newdata <- tmerge(ages1, transitions, id=id, transition=cumtdc(transition))

作为一个失败的例子,考虑 id=22。它在 4023 天后经历一次转变。因此, tmerge 应该创建两个 id=22 的新行:一个用于 0 到 4023,另一个用于 4023 到 16466(组织“死亡”的年龄)。这两个都已创建,但 id=22 的第三个不必要的行也是如此,起始值为 0,终止值为 16466。

在 64 个组织中分布着 17 个转换,我计算了 3 个与上述类似的错误,但无法弄清楚是什么使这 3 个与其余(成功)案例区分开来。我可以轻松修复这 3 个,但随着其他 TVC 的添加,检测和修复此类错误的时间成本将呈指数增长。关于我缺少什么的任何想法?

最佳答案

这个问题通过一个简单的按 id 排序来解决。 ages1 <- ages1[order(ages1$id),] .包创建者提供了这个解决方案。

关于r - 使用 'tmerge' 包中的 'survival' 向生存数据添加时变协变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31272192/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com