Kama Jansen

Kama Jansen Student, Akademia
Medyczna w
Amsterdamie

Temat: ROC w R

Witam czy ktos moze mi pomoc?
problem jest taki ze robie ROC przy uzyciu pakietow pROC i ROCR i otrzymuje rozne wykresy, a powinny byc takie same, nie wiem gdzie jest blad?
pakiet ROCR:
pred.sC2 <- prediction(dsa$sCyC, dsa$group)
perf.sC2 <- performance(pred.sC2,"sens","fpr")
plot(perf.sC2)

pakiet pROC:
rocobj.s <- plot.roc(dsa$group,dsa$sCyC)

w wyniku otrzymuje ROC ale jeden wykres jest "odwrocony" w porownaniu z drugim,co moze byc tego przyczyna?
oto moje wykresy:

Obrazek


uzywajac ROCR otrzymuje na osi X 1-specitivity i os jest od 0 do 1,
uzywajac pROC na osi X jest specitivity i os od 1 do 0,
wiec w obu przypadkach wykres powinien byc taki sam, ale wykres sie odwraca jakby do "gory nogami" i AUC dla obu wykresow jest tez inne
prosze o pomocKama Jansen edytował(a) ten post dnia 11.09.12 o godzinie 23:13
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: ROC w R

Nie do końca rozumiem pytanie. A co chcesz uzyskać?

Używając pakietu ROCR i funkcji 'performance' możesz określić co ma być na osi X a co na Y (używając przykladowych danych):

library(ROCR)
data(ROCR.simple)
pred <- prediction( ROCR.simple$predictions, ROCR.simple$labels)
# 1
plot(performance(pred,"spec","sens"))
# 2
p <- performance(pred,"sens","spec")
plot(p)


Można też się dostać do wektorów dla X i Y z obiektu "performance"

p@x.values
p@y.values

i narysować taki wykres, jaki się chce...
Kama Jansen

Kama Jansen Student, Akademia
Medyczna w
Amsterdamie

Temat: ROC w R

Dzieki Michal, oczywiscie masz racje co piszesz. mi chodzi o nastepujace:
chce narysowac ROC
2 gorne wykresy sa takie same (co jest logiczne) i uzywam tu kodu:
z ROCR:
pred.sC2 <- prediction(dsa$serumCyC2,dsa$group.RIFLEsum2)
perf.sC2 <- performance(pred.sC2,"sens","fpr")
plot(perf.sC2, col="red")
pred.sC1 <- prediction(dsa$serumCyC1, dsa$group.RIFLEsum1)
perf.sC1 <- performance(pred.sC1,"sens","fpr")
plot(perf.sC1, col="blue", add=T)
z pROC:
rocobj1.s <- plot.roc(dsa$group.RIFLEsum2, dsa$serumCyC2, col="red")
rocobj2.s <- plot.roc(dsa$group.RIFLEsum1, dsa$serumCyC1, col="blue", add=T)

2 dolne wykresy sa natomiast inne choc i one powinny byc takie same bo kod jest taki sam, tylko zamiast serumCyC uzywam urineCyC

chodzi mi o to ze nie rozumiem sytuacji z 2 dolnych wykresow, czemu one nie sa takie same, przeciez sytuacja jest analogiczna jak w przykladzie z 2 gornych wykresow.
jednoczesnie AUC tez jest rozne na dolnych wykresach
nie wiem ktory z dolnych wykresow jest wlasciwy? skad ta odwrotnosc?
bede wdzieczna za kazda pomoc
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: ROC w R

Podejrzewam, że wartości AUC się różnią, bo AUC jest liczone w różny sposób w obu pakietach. Cytując helpa:

W ROCR: This is equal to the value of the Wilcoxon-Mann-Whitney test statistic and also the probability that the classifier will score are randomly drawn positive sample higher than a randomly drawn negative sample.

W pROC: This function computes the numeric value of area under the ROC curve (AUC) with the trapezoidal rule

A wykresy się różnią, bo tak uznali autorzy pakietów. Dane są (prawie) te same więc możesz sobie wybrać ten, który Ci się bardziej podoba lub bardziej się spodoba Twoim recenzentom ;)
Kama Jansen

Kama Jansen Student, Akademia
Medyczna w
Amsterdamie

Temat: ROC w R

Dzieki Michal za pomoc.

Następna dyskusja:

Warcraft III ROC/TFT czy kt...




Wyślij zaproszenie do