Hola, Marta, Por lo que he podido ver tus datos ya tienen calculados las tasas de verdaderos y falsos positivos (TPR y FPR). También parece que los tienes ordenados por la variable FishSpeed y supongo que también por las que parecen marcas de tiempo. No necesitas ROCR porque con un simple plot te sale algo parecido a una curva. Eso sí, veo que son medidas repetidas en el tiempo para cada valor de FishSpeed. Como apaño rápido he promediado por esa variable para que salga algo parecido a una curva ROC, lo podrás hacer con el código que pongo abajo. Te cuento hasta donde sé lo que se puede hacer a partir de aquí: - Las librerías especializadas en ROC (ROCR y pROC) suponen que tú le pasas cada registro y un resultado 0/1 (fallo/acierto) de tal manera que es la propia librería la que se encarga de calcular TPR, FPR (entre otros muchos indicadores como los que pones en tu código -ojo que FPR es (1-specificity). Con ese cálculo se genera un objeto R que facilita luego el dibujo, así como el cálculo de área bajo la curva, etc. Así que si tienes los datos en bruto ambas librerías te facilitarán mucho todo el proceso. - Tanto ROCR como pROC incorporan funciones para ROC estáticas (las medidas no son repetidas en el tiempo, se suponen casos independientes). ROCR genera gráficos más vistosos (va en gustos y depende de muchas cosas, ojo) y quizás sea más fácil de usar. pROC añade montones de funciones para comparar y pruebas estadísticas para comparar las curvas entre ellas y frente a la predicción nula (la diagonal en el espacio ROC). Según parece, tus datos son dinámicos (se repiten en intervalos para cada medida de FIshSpeed), y si lo que quieres es modelizar ROC dinámicas hay alternativas en R (pero este enfoque es mucho más complicado que el de ROC estática): - el paquete survivalROC http://cran.r-project.org/web/packages/survivalROC/survivalROC.pdf - y risksetROC http://cran.r-project.org/web/packages/risksetROC/risksetROC.pdf
El siguiente artículo sobre pROC está muy bien para ver las capacidades de la librería: http://www.biomedcentral.com/1471-2105/12/77 #### con tus datos # Pon tu directorio de trabajo setwd("C:/Users/pedroc/Downloads") list.files() # Lees el fichero, ojo al separador decimal rocdata <- read.table(file = "roc.csv", header = T, sep = ";", dec = ",") # Convertimos los FP Y TP a porcentajes entre 0 y 1 rocdata$FP <- gsub("%", "", rocdata$FP) rocdata$FP <- gsub(",", ".", rocdata$FP) rocdata$FP <- as.numeric(rocdata$FP)/100 rocdata$TP <- gsub("%", "", rocdata$TP) rocdata$TP <- gsub(",", ".", rocdata$TP) rocdata$TP <- as.numeric(rocdata$TP)/100 # Resulta interesante tener FishSpeed como factor rocdata$FishSpeed <- as.factor(rocdata$FishSpeed) summary(rocdata) # Estas son tus curvas ROC tal y como vienen ordenadas (por FishSpeed y supongo que por alguna de tiempo) # Fíjate que *no* necesitas ROCR plot(rocdata$FP, rocdata$TP) # Si promediamos todas las medidas dentro de cada FishSpeed tendremos: TPaverage <- tapply(rocdata$TP, rocdata$FishSpeed, mean) FPaverage <- tapply(rocdata$FP, rocdata$FishSpeed, mean) plot.new() plot(FPaverage, TPaverage, xlim = c(0,1), ylim = c(0,1), col = "green", type = "l") abline(0, 1, col = "red") El 20/06/2014 14:12, [email protected]<mailto:[email protected]> escribió: Asuntos del día: 1. Como construir una curva ROC (Marta valdes lopez) ---------------------------------------------------------------------- Message: 1 Date: Fri, 20 Jun 2014 12:11:56 +0000 From: Marta valdes lopez <[email protected]><mailto:[email protected]> To: [email protected]<mailto:[email protected]> Subject: [R-es] Como construir una curva ROC Message-ID: <cae0cxbgak4uu6aphbes0odvyb10x2sdmkc-4alp0h96-uas...@mail.gmail.com><mailto:cae0cxbgak4uu6aphbes0odvyb10x2sdmkc-4alp0h96-uas...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Hola! Tengo que hacer una curva ROC com unos datos que obtuve de hacer una macro de excel y aplicar unas reglas, y basicamente tengo que a partir de la variacion del tiempo y la velocidad del barco obtengo diferentes porcentajes de true positives (TP) y false positives (FP) y con eso deberia de construir una curva ROC. Dada mi ignorância en este tema, no se muy bien por donde empezar , estuve mirando los manuales de dos paquetes el ROCR y el pROC, alguien me recomienda alguno en particular? Yen los manuales el script del ROCR para hacer la curva era algo asi: library(ROCR) data(ROCR.simple) pred <- prediction( ROCR.simple$predictions, ROCR.simple$labels) perf <- performance(pred,"tpr","fpr") plot(perf) ## precision/recall curve (x-axis: recall, y-axis: precision) perf1 <- performance(pred, "prec", "rec") plot(perf1) ## sensitivity/specificity curve (x-axis: specificity, ## y-axis: sensitivity) perf1 <- performance(pred, "sens", "spec") plot(perf1) Me parecio mas fácil de entender que el del otro paquete pero no se como aplicarlo a mis datos y si voy a obtener lo que quiero, si alguien me puede orientar un poco, agradeceria. Adjunto mis datos para tener una idea. Muchas gracias, un saludo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140620/49a6085b/attachment.html><https://stat.ethz.ch/pipermail/r-help-es/attachments/20140620/49a6085b/attachment.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: amanhecer ROC csv.csv Type: text/csv Size: 51489 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140620/49a6085b/attachment.bin><https://stat.ethz.ch/pipermail/r-help-es/attachments/20140620/49a6085b/attachment.bin> ------------------------------ _______________________________________________ R-help-es mailing list [email protected]<mailto:[email protected]> https://stat.ethz.ch/mailman/listinfo/r-help-es Fin de Resumen de R-help-es, Vol 64, Envío 33 ********************************************* -- Pedro Concejero BI & Big Data - Internal Exploitation - Telefónica CCDO & Telefónica I+D<http://www.tid.es> E-mail: [email protected]<mailto:[email protected]> skype: pedro.concejero twitter: @ConcejeroPedro linkedin <http://www.linkedin.com/in/pedroconcejero/es> Únete a la lista R en español<https://stat.ethz.ch/mailman/listinfo/r-help-es#%21> y a tu gRupo local R, el mío es el gRupo R madRid <http://r-es.org/Grupo+de+Inter%C3%A9s+Local+de+Madrid+-+GIL+Madrid&structure=Comunidad> ________________________________ Este mensaje se dirige exclusivamente a su destinatario. Puede consultar nuestra política de envío y recepción de correo electrónico en el enlace situado más abajo. This message is intended exclusively for its addressee. We only send and receive email on the basis of the terms set out at: http://www.tid.es/ES/PAGINAS/disclaimer.aspx [[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
