Я хочу рассчитать человеко-время наблюдения за календарным месяцем. В моем примере у меня есть три предмета с разным временем наблюдения. Я хочу знать, варьируются ли ставки события в зависимости от года, поэтому хочу подвести итог времени, которое они проводят в каждом из тертилей.
library(lubridate)
library(survival)
event <- c(1,1,1)
id <- c(1,2,2)
followup_time <- c(365, 365*2, 365*3)
right.date <- c(ymd("2012-06-01"), ymd("2013-09-01"), ymd("2011-01-01"))
left.date <- right.date-followup
tertile <- cut(month(right.date), c(0,4,9,12), include.lowest = T)
df <- data.frame(id, left.date, right.date, followup_time, event, tertile); df
id left.date right.date followup_time event tertile
1 1 2011-06-01 2012-06-01 365 1 (4,9]
2 2 2011-09-01 2013-09-01 730 1 (4,9]
3 2 2008-01-01 2011-01-01 1095 1 [0,4]
sum(df$followup_time)
[1] 2190
Используя пакет survival
в R, функция pyears()
Я получаю следующие результаты. Однако, хотя количество предметов и событий правильное, человеко-время наблюдения является неправильным, в соответствии с моими потребностями.
s <- Surv(time = followup_time, event = event)
summary(pyears(s ~ tertile , scale = 1))
Call: pyears(formula = s ~ tertile , scale = 1)
number of observations = 3
month N Events Time
-------- --- -------- ------
[0,4] 1 1 1095
(4,9] 2 2 1095
(9,12] 0 0 0
Я ожидаю следующих результатов, которые соответствуют сумме время в группе риска каждый субъект провел в каждом из интервалов.
month N Events Time
-------- --- -------- ------
[0,4] 1 1 547.5
(4,9] 2 2 547.5
(9,12] 0 0 547.5
Некоторые люди используют функцию tcut()
из этого же пакета для выполнения такого рода операций для расчета времени на человека, но у меня не было удовлетворительные результаты.