【问题标题】: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

感谢任何建议。谢谢。

【问题讨论】:

    标签: r survival-analysis population-count


    【解决方案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 函数可以使它变得容易。您仍然需要将这些值用作权重。
    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 2017-02-23
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多