#r #survival-analysis #population-count
#r #анализ выживания #количество населения
Вопрос:
Я анализирую набор данных о продолжительности жизни, основанный на популяции животных (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. Количество смертей должно быть присвоено аргументу weights в survfit или другой функции.
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()
Комментарии:
1. На самом деле, столбец выживания представляет всех живых и подсчитываемых червей. Я начал с 143 червей, ни один из них не выжил за последние 24 дня, и подвергнутые цензуре черви уже удалены. Я вижу из вашего ответа, что я не должен делать это таким образом. И… Я только что заметил опечатку в предоставленных мной данных, число активных на второй день составляло 128. Это определенно помогает, я еще немного поиграю. Спасибо.
2. Затем вы должны выполнить последовательное различие активных элементов, чтобы получить количество мертвых элементов. Есть функция diff, которая упростила бы это. Вам все равно нужно будет использовать эти значения в качестве весов.