Hola Pedro, Muchisimas gracias por tu respuesta, me há aclarado mucho. Es lo que veia que ya tenia esas tasas en realidad. Voy a probar lo que me dices y te cuento.
Gracias! un saludo Marta El 23 de junio de 2014, 14:32, Pedro Concejero Cerezo <[email protected]> escribió: > 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] 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]> <[email protected]> > To: [email protected] > Subject: [R-es] Como construir una curva ROC > Message-ID: > <cae0cxbgak4uu6aphbes0odvyb10x2sdmkc-4alp0h96-uas...@mail.gmail.com> > <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 > [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] > <[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
