【发布时间】:2014-10-25 19:44:08
【问题描述】:
我正在尝试使用auc(roc(predictions, labels)) 计算 AUC,其中labels 是1 (x15) 和0 (x500) 的数值向量,predictions 是导出概率的数值向量来自glm [二项式]。它应该很简单,但是auc(roc(predictions, labels)) 给出了一个错误提示“没有足够的不同预测来计算 ROC 曲线下的面积”。我一定在做一些傻事,但我不知道是什么。可以吗?
代码是
library(AUC)
#read the data, that come from a previous process of a species distribution modelling
prob<-read.csv("prob.csv")
labels<-read.csv("labels.csv")
#prob is
#labels is
roc(prob,labels)
#Gives the error (that I'm NOT interest in)
Error in `[.data.frame`(predictions, pred.order) : undefined columns selected
In addition: Warning messages:
1: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
2: In is.na(e2) : is.na() applied to non-(list or vector) of type 'NULL'
3: In is.na(e2) : is.na() applied to non-(list or vector) of type 'NULL'
#I change the format to numeric vector
prob<-as.numeric(prob[,2])
labels<-as.numeric(labels[,2])
#Verify it is a vector numeric
class(prob)
[1] "numeric"
class(labels)
[1] "numeric"
#call the roc functoin
roc(prob,labels)
Error in roc(modbrapred, pbbra) : # THIS is the error I0m interested in
Not enough distinct predictions to compute area under the ROC curve.
In addition: Warning messages:
1: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
2: In is.na(e2) : is.na() applied to non-(list or vector) of type 'NULL'
3: In is.na(e2) : is.na() applied to non-(list or vector) of type 'NULL'
Data is as follows
labels.csv
"","x"
"1",1
"2",1
"3",1
"4",1
"5",1
"6",1
...
"164",1
"165",1
"166",0
"167",0
"168",0
"169",0
"170",0
"171",0
"172",0
...
"665",0
prob.csv
"","x"
"1",0.977465874525236
"2",0.989692657762578
"3",0.989692657762578
"4",0.988038430564019
"5",0.443188602491041
"6",0.409732585195485
...
"164",0.988607910625475
"165",0.986296936078692
"166",7.13529696560611e-05
"167",0.000419255989134081
"168",0.00295825183558019
"169",0.00182941235784709
"170",4.85601026999172e-09
"171",0.000953106471289961
"172",1.70252014430306e-05
...
"665",8.13413358866349e-08
【问题讨论】:
-
你能添加一个可重现的例子吗?
-
请阅读how to create a reproducible example。您应该编辑您的问题以包括我们可以复制/粘贴到 R 中以获得相同的错误。因为关于使代码运行所需的
library()调用。你是对的,它应该很容易,所以你到底是如何让它变得困难的还不清楚。 -
感谢 cmets。我现在包含了我真实数据的一部分
-
但不是生成错误的代码,而且您仍然没有指定您使用的是哪个库。就目前而言,这个问题无法回答。请重新阅读 MrFlicks 的评论,直到您完全理解为止。
-
感谢您的指示。我现在上传了代码和数据