Что на самом деле означает сообщение об ошибке Surv "начало и конец разной длины"?

Я анализирую ряд данных о продолжительности жизни, основанных на популяции животных (C. elegans), и я не уверен, правильно ли настроены данные или я неправильно использую функцию Surv.

У меня есть таблица с количеством дней с начала и количеством животных, живущих в каждый день. Я не отслеживаю отдельных животных, но общее количество. Я попытался получить номер, который умер, но это не изменило сообщение об ошибке, которое я получаю.

Данные, которые я использую:

data = matrix (c(0,143,2,28,3,126,4,103,6,102,7,100,8,88,9,70,10,51,11,44,13,27,15,10,17,4,18,3,20,2,22,2,24,0), ncol=2, byrow = TRUE)
colnames(data) <- c("Day", "Survival")

Код у меня на данный момент:

data <- data %>% 
Surv (time = as.numeric("Day"), event = as.numeric("Survival"))

Примечание: я использую as.numeric потому что я импортирую файл CSV и столбец помечен как <dbl>

Полное сообщение об ошибке я получаю:

Error in Surv(., time = as.numeric("Day"), event = as.numeric("Survival")) : 
  Start and stop are different lengths
In addition: Warning message:
In Surv(., time = as.numeric("Day"), event = as.numeric("Survival")) :
  NAs introduced by coercion

Любой совет приветствуется. Спасибо.

1 ответ

Итак, вы начали с ровно 903 червей? И 143 из них умерли еще до того, как вы начали отсчет времени? И никто из них не выжил за последние 24 дня?

(Предполагая, что выводы, которые я сделал из ваших данных, верны....)

Таким образом, в столбце "Выживание" не должно быть значений событий, поскольку события равны 1 для смерти или 0 для потери для последующего наблюдения (цензура). Поскольку у вас нет никакой цензуры, очевидно, все события должны быть 1. Количество смертей должно быть назначено аргументу весов в выживаемости или другой функции.

 data = cbind( as.data.frame(matrix (c(0,143,2,28,3,126,4,103,6,102,7,100,8,88,9,70,10,51,11,44,13,27,15,10,17,4,18,3,20,2,22,2,24,0),
                                     ncol=2, byrow = TRUE)),
               "ones"=1)
 colnames(data) <- c("Day", "Survival", "ones")

fit <- survfit(Surv(time=Day, event=ones)~1, data=data, weights=data$Survival )
png();plot(fit); dev.off()

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