#r
#r
Вопрос:
Я смоделировал некоторые данные с правильной цензурой для анализа выживания, которые я сохранил в списке. Я хочу применить survfit
функцию к этому списку. Я пытаюсь lapply
, но сталкиваюсь с некоторыми проблемами.
Некоторые данные:
set.seed(1)
sim_rightcens <- function(n, rate, a, b) {
## Failure time ~ Exp(scale = 0.4)
death_time <- rexp(n, rate = rate)
## Censor time ~ Unif(a = 0, b = 2)
censor_time <- runif(n, min = a, max = b)
## Obs time = min(censor_time, death_time)
observed_time <- pmin(death_time, censor_time)
## di
status <- as.numeric(death_time <= censor_time)
df <- cbind(observed_time, status)
return(df)
}
1000 наборов данных с правильной цензурой:
cens.list <- replicate(1000, sim_rightcens(n = 200, rate = 0.4, a = 0, b = 2), simplify = FALSE)
Мой список данных с правильной цензурой:
library(survival)
surv_object.list <- lapply(cens.list, Surv)
Что я пробовал до сих пор:
lapply(surv_object.list, function(x) survfit(formula(paste0(x, " ~ 1"))))
Решение:
surv_object.list <- lapply(cens.list, function(x) Surv(x[, 1], x[, 2]))
lapply(surv_object.list, function(x) survfit(x ~ 1))
Ответ №1:
Вы можете пренебречь formula
генерацией.
library(survival)
lapply(surv_object.list, function(x) survfit(x ~ 1))
# [[1]]
# Call: survfit(formula=x ~ 1)
#
# n events median 0.95LCL 0.95UCL
# 200.000 52.000 0.953 0.148 0.446
#
# [[2]]
# Call: survfit(formula=x ~ 1)
#
# n events median 0.95LCL 0.95UCL
# 200.000 56.000 0.429 0.111 1.136
#
# [[3]]
# Call: survfit(formula=x ~ 1)
#
# n events median 0.95LCL 0.95UCL
# 200.000 51.000 0.100 0.697 0.132
#
# [[4]]
# Call: survfit(formula=x ~ 1)
#
# n events median 0.95LCL 0.95UCL
# 200.000 66.000 0.360 1.284 0.353
#
# [[5]]
# Call: survfit(formula=x ~ 1)
#
# n events median 0.95LCL 0.95UCL
# 200.000 62.000 0.248 0.428 0.378
Данные:
set.seed(1)
cens.list <- replicate(5, sim_rightcens(n=200, rate=0.4, a=0, b=2), simplify=FALSE)
surv_object.list <- lapply(cens.list, survival::Surv)
Комментарии:
1. Когда я запускаю этот код, используя то же начальное значение и то же количество повторений, я получаю другой вывод и это предупреждающее сообщение:
In log(xx) : NaNs produced
2. @user12310746 Я допустил некоторую ошибку при генерации данных, теперь работает.