使用 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() 的问题的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 R 中 readtext 包中的 readtext() 替换从 PDF 文件中提取的文本中的“\r\n-”