Surv 错误消息“开始和停止的长度不同”实际上是啥意思?
Posted
技术标签:
【中文标题】Surv 错误消息“开始和停止的长度不同”实际上是啥意思?【英文标题】:What does the Surv error message "start and stop are different lengths" actually mean?Surv 错误消息“开始和停止的长度不同”实际上是什么意思? 【发布时间】:2019-03-28 06:03:56 【问题描述】:我正在分析一组基于动物群(秀丽隐杆线虫)的寿命数据,但我不确定我的数据设置是否不正确,或者我使用的 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。死亡人数应分配给 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()
【讨论】:
其实Survival一栏代表了所有存活且可数的蠕虫。我一开始有 143 条蠕虫,它们都没有存活超过 24 天,而且经过审查的蠕虫已经被移除。我从您的回复中看到我不应该那样做。而且......我刚刚注意到我提供的数据中的错字,第 2 天的存活人数是 128。这肯定有帮助,我会再玩一些。谢谢。 那么你应该对活着的物品进行序列差异以获得死亡物品的数量。有一个 diff 函数可以使它变得容易。您仍然需要将这些值用作权重。以上是关于Surv 错误消息“开始和停止的长度不同”实际上是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章