Что на самом деле означает сообщение об ошибке Surv «начало и конец разной длины»? - PullRequest
1 голос
/ 28 марта 2019

Я анализирую набор данных о продолжительности жизни, основанных на популяции животных (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 Ответ

0 голосов
/ 28 марта 2019

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

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

Таким образом, столбец Survival не должен быть значениями события, так каксобытия либо 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()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...