在 R 中使用 predictABEL 包中的 plotCalibration() 的问题

Problems with using plotCalibration() from the predictABEL package in R

我在使用 plotCalibration() 函数时遇到了一些问题,我之前设法让它工作,但最近在使用另一个数据集 (here is a link to the .Rda data file) 时,我一直无法动摇关闭不断出现的错误消息:

> plotCalibration(data = data, cOutcome = 2, predRisk = data$sortmort)

Error in plotCalibration(data = data, cOutcome = 2, predRisk = data$sortmort) : The specified outcome is not a binary variable.`

当我尝试将 cOutcome 列设置为因子或逻辑时,它仍然不起作用。

我查看了函数的源代码,唯一一次出现错误消息是在第一个 if()else{} 语句中:

if (length(unique(y))!=2) {stop(" The specified outcome is not a binary variable.\n")} 
else{

但是我检查过length(unique(y))确实是==2,所以不明白为什么还是会报错!

请尝试使用 table(data[,2],useNA = "ifany") 查看数据集结果变量的级别数。

函数plotCalibration将在结果为二进制变量(两个级别)时执行。

使用您之前发送的数据,我没有看到任何错误:

生成了以下输出以及校准图:

> library(PredictABEL)
> plotCalibration(data = data, cOutcome = 2, predRisk = data$sortmort)
$Table_HLtest
               total meanpred meanobs predicted observed
[0.000632,0.00129)   340    0.001   0.000      0.31        0
0.001287             198    0.001   0.000      0.25        0
[0.001374,0.00201)   283    0.002   0.004      0.53        1
0.002009             310    0.002   0.000      0.62        0
[0.002505,0.00409)   154    0.003   0.000      0.52        0
[0.004086,0.00793)   251    0.006   0.000      1.42        0
[0.007931,0.00998)   116    0.008   0.009      0.96        1
[0.009981,0.19545]   181    0.024   0.011      4.40        2

$Chi_square

[1] 4.906

$df

[1] 8

$p_value

[1] 0.7676

确保将数据帧传递给 PlotCalibration。传递 dplyr tibble 可能会导致此错误。使用正常 as.data.frame() 进行转换对我有用。