R:dynpred::cindex中的错误,if(time[j] > time[i]){中的错误:需要TRUE/FALSE时缺少值

nx7onnlm  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(69)

我正在尝试计算考克斯比例风险模型的C统计量,通常使用dynpred::cindex进行得非常顺利。然而,现在我遇到了一个我以前从未遇到过的bug。请在下面找到一个可复制的示例。

可复制示例

# Produce a random dataset, columns: linear predictor (-1,+1), survival (1-60), vital status (0/1)

TestData <- setnames(as.data.frame(
    cbind(runif(n=20, min=-1, max=1),
    runif(n=20, min=1, max=60),
    round(runif(n=20, min=0, max=1)))),
    c("LP","Overall_survival","Vital_status"))

cindex(Surv(Overall_survival, Vital_status)~LP, data=TestData)

在这个可重复的代码中,我随机遇到(大约50%的时间我运行这个代码)以下错误。

遇到dynpred::cindex错误

Error in if (time[j] > time[i]) { : missing value where TRUE/FALSE needed

虽然我不明白为什么dynpred::cindex不应该总是能够用提供的数据集计算C统计量,因为这些数据可能是真实的数据。
谢谢,史蒂夫

vcudknz3

vcudknz31#

我在我的数据中遇到了同样的问题,并找到了原因。解释如下:如果在TestData中,最高LP观测值在Vital_Status列中具有删失标志1,则会收到错误。或者,如果最低LP观测的TestData在Vital_Status列中具有删失标志0,则您会收到错误。
不知何故,软件包要求最高的timetoevent值具有flag = 0,并且最低的值具有flag = 1。
埃弗特

相关问题