2

我正在分析一组基于动物种群(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

任何建议表示赞赏。谢谢你。

4

1 回答 1

1

所以你刚开始是 903 蠕虫?在你开始计时之前,他们中的 143 人就已经死了?他们都没有活过 24 天?

(假设我从您的数据中做出的推论是正确的......)

所以生存列不应该是事件值,因为事件要么是 1 表示死亡,要么是 0 表示失访(审查)。由于您没有任何审查,显然,所有事件都应为 1。死亡人数应分配给 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()

在此处输入图像描述

于 2019-03-28T06:51:07.787 回答