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文件并且该列被标记为&lt;dbl&gt;

我得到的完整错误信息:

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 错误消息“开始和停止的长度不同”实际上是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

强制java以用户输入作为消息进行编译错误

如何从错误消息中获取实际的存储过程行号?

HTML 状态消息

HTML 状态消息

在结果消息猫鼬节点验证中显示实际错误

打印出 ValueError 的实际错误消息