Что на самом деле означает сообщение об ошибке 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()