Левая цензура для данных о выживаемости в R

Я хочу провести анализ выживания (моделирование Каплана-Мейера и Кокса) на данных, которые подвергаются цензуре как слева, так и справа. Я смотрю на время возникновения аритмии сердца (AF) в присутствии или отсутствии определенного гена (Gene 0 или 1). Тем не менее, у некоторых субъектов уже выявлена ​​аритмия при наборе, поэтому их следует оставить под цензурой. Я прочитал документацию пакета выживания, но не могу понять, как учесть левую цензуру. Некоторые составили пример данных ниже. Субъекты 1 и 3 имели AF на исходном уровне, поэтому их следует оставить под цензурой. Субъект 2 не испытал событие к концу наблюдения и поэтому подвергается цензуре. Испытуемые 5 и 6 оба испытали событие (в 8 и 3 месяца соответственно).

Gene<-c(0,0,1,1,0)
AF_at_baseline<-c(1,0,1,0, 0)
Followup_time<-c(11,3,8,15,7)
AF_time<-c(NA, NA, NA, 8, 3)
AF_data<-data.frame(Gene, AF_at_baseline, Followup_time, AF_time)

2 ответа

У меня была похожая проблема, и я решил ее так:

Как указано в survival файл справки нужно указать time а также time2,

Вы можете думать о данных, оставленных цензурой, как о -infinity до time Вы измерили, и право цензуры идти от time Вы измерили (вероятно, последующее наблюдение) до +infinity, Бесконечность лучше всего кодируется NA,

То, что решило мою проблему, создало два вектора: начальный вектор time и вектор остановки time2,

За time Вы хотите, чтобы все те ценности, которые оставлены цензурой, были NA, Право цензурированные наблюдения заполняются временем измерения, так же как события.

За time2 это наоборот.

Однако я не получаю ваши данные. Зачем вам следить за темами, если у них уже было событие? Это то, что вы делаете для субъектов 4 и 5, говоря, что время AF было 8 и 3, а Followup_time было 15 и 7.

Пытаясь помочь, я предполагаю следующее:

У вас 5 пациентов с

AF_at_baseline<-c(1,0,1,0,0) #where 1 indicates left censoring

Время наблюдения - это время события (или последнее время наблюдения для цензуры слева и справа)

Так что для данных с левой цензурой ваш Followup_time будет выглядеть так:

Followup_time <- c(NA, 3, NA, 15, 7)

Для правильной цензуры данных:

Followup_time2 <- c(11, NA, 8 ,15, 7)
#Since you indicated that only subject 2 didn't experience the event

Теперь вы можете позвонить Surv

Surv.Obj <- Surv(Followup_time, Followup_time2, type = 'interval2')
Surv.Obj
[1] 11-  3+  8- 15   7 # with '-' indicating left censoring and '+' right censoring

Тогда вы можете позвонить survfit и построить кривую Каплана-Мейера:

km <- survfit(Surv.Obj ~ 1, conf.type = "none")
km
Call: survfit(formula = Surv.Obj ~ 1, conf.type = "none")

      n  events  median 0.95LCL 0.95UCL 
      5       4       7       7      NA 
    enter code here

summary(km)
Call: survfit(formula = Surv.Obj ~ 1, conf.type = "none")

 time n.risk  n.event survival std.err lower 95% CI upper 95% CI
  7.0      4 3.00e+00     0.25   0.217       0.0458            1
  7.5      1 4.44e-16     0.25   0.217       0.0458            1
 15.0      1 1.00e+00     0.00     NaN           NA           NA


plot(km, conf.int = FALSE, mark.time = TRUE)

До сих пор я не узнал, как сделать Кокс PH с данными интервала. Смотрите мой вопрос здесь.

Если у вас есть как данные, подвергнутые цензуре слева, так и справа, вы можете рассматривать это как особый случай интервальной цензуры. Это тот случай, когда вы знаете время события только с интервалом. Если вы оставили цензуру слева, этот интервал равен (-Inf, t), а справа цензура - (t, Inf).

Таким образом, вы можете использовать мой пакет R icenReg смоделировать ваши данные. Для модели Cox-PH это может подходить как

fit <- ic_sp(cbind(left, right) ~ covars, 
             data = myData, model = 'ph', 
             bs_samples = 500)

где left а также right являются левой и правой сторонами интервала, в котором событие произошло для человека. Если событие без цензуры, то просто установите left равно right для этого предмета.

Другие вопросы по тегам