簡體   English   中英

使用'生存'包中的'tmerge'為生存數據添加時變協變量

[英]Adding time varying covariates to survival data using 'tmerge' in 'survival' package

我正在嘗試使用生存包中的tmerge為數據集添加幾個時間相關的協變量以進行生存分析。 我的意思是按照主題的插圖中的推薦順序添加每個,但第一次添加的輸出不能按我的意圖工作。

更具體地說,我有一個簡單的data.frame,其中包含個人(組織)的ID以及組織停止活動之前的天數(年齡)。 第二個data.frame具有id和組織經歷“轉換”事件之前的天數。 並非所有組織都經歷過轉換,因此並非所有組織都出現在第二個數據框架中。

在第一次調用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個但是隨着其他TVC的增加,檢測和修復這些錯誤的時間成本將呈指數級增長。 關於我缺少什么的任何想法?

這個問題通過id進行簡單的排序來解決。 ages1 <- ages1[order(ages1$id),] 包創建者提供了此解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM