2014-09-01 8 views
5

I labels1 (X15) ve 0 (x 500) sayısal bir vektördür auc(roc(predictions, labels)) kullanılarak AUC hesaplamak için bağlama ediyorum altındaki alanın hesaplanması için ve predictions türetilen olasılıkları bir sayısal vektördür bir glm [binom]. Çok basit olmalı, ama auc(roc(predictions, labels))"ROC eğri altında kalan alan hesaplamak için yeterli değil farklı tahminler" şeklinde bir hata veriyor. Ben aptal bir şey yapıyor olması gerekir ama ne bulamaz. Yapabilir misin?yeterli tat tahminler roc

kod sorun benim "etiket" sayısal bir vektör olduğuydu

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 
+1

adanmış bir süre için teşekkürler? – dayne

+0

[bir tekrarlanabilir örnek nasıl oluşturulacağını] okuyunuz (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Sence/kopyalamak aynı hatayı almaya R yapıştırabilirsiniz olduğunu içerecek şekilde soruyu düzenlemek gerekir. 'Kütüphanede yaklaşık()' çağrıları almak için gerekli olduğundan kod çalıştırmak için. Sen, kolay olmalı, bu nedenle zor yaptık tam olarak nasıl belirsizdir haklısın. Yorumlar için – MrFlick

+0

teşekkürler. Şimdi benim gerçek verilerin bir kısmını – user2942623

cevap

17

, ama roc bir faktör gerekli. Bu yüzden

labels <- factor(labels) 

dönüştürülmüş ve roc olarak çalıştı olması gerektiği

Eğer bir tekrarlanabilir bir örnek eklemek misiniz