我正在根据一组动物(秀丽隐杆线虫)分析一组寿命数据,但不确定是否正确设置了数据或我是否错误使用了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
任何建议都值得赞赏。谢谢。
答案 0 :(得分:0)
那么您刚开始使用903种蠕虫?还有143个在您开始计时之前就已经死了吗?他们都没有存活超过24天?
(假设我从您的数据中得出的推论是正确的...。)
因此,“生存”列不应是事件值,因为事件对于死亡而言是1,对于后续事件而言是0(受审查)。显然,由于您没有任何审查,因此所有事件都应为1。死亡数应在survfit或其他函数中的weights参数中分配。
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()