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

Posted

技术标签:

【中文标题】使用 R 中 predictABEL 包中的 plotCalibration() 的问题【英文标题】:Problems with using plotCalibration() from the predictABEL package in R 【发布时间】:2016-04-15 14:56:26 【问题描述】:

我在使用 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,所以不明白为什么错误消息仍然出现!

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

以下输出与校准图一起生成:

> 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

【讨论】:

谢谢!我怀疑这里存在名称空间或环境问题。在这种情况下,当我处理数据时,我将不得不尝试删除环境中可能存在的其他对象。【参考方案3】:

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

函数plotCalibration将在结果为二元变量(两级)时执行。

【讨论】:

我已经确认结果变量只有2个级别:这是使用table(data[,2], useNA="ifany)的结果:` 0 1 1829 4 `跨度> 太好了,您已经尝试过了。这表明 length(unique(y)) 应该是 2,但您之前指出“我已经检查过 length(unique(y)) 确实是 !=2”。为什么会这样? 抱歉打错了,不应该有 !,应该是 == 而我现在已经更正了。

以上是关于使用 R 中 predictABEL 包中的 plotCalibration() 的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 PL/SQL 包中声明全局异常

如何在 R 包中正确使用其他包中的函数

Oracle PL/SQL:如何在长包中查找未使用的变量?

无法使用 R 中 readtext 包中的 readtext() 替换从 PDF 文件中提取的文本中的“\r\n-”

如何使用 R 中“ivprobit”包中的“ivprobit”功能?

PL/SQL,如何将包的通用代码行放在共享包中