Pedro Concejero Cerezo
2016-Jan-27 10:17 UTC
[R-es] Determinación del punto de corte óptimo (Fernando Sanchez)
Hola, Fernando, El tema de optimización de puntos de corte es un clásico del diagnóstico (enfermo / no enfermo), objetivo que es directamente aplicable a cualquier otro criterio dicotómico, con sólo dos valores. En tu caso, en el que tienes 3, me pregunto si son estrictamente diferentes (p ej 3 tipos de algo) o tienen alguna ordenación. Pero en cualquier caso puedes plantear 3 diagnósticos: A contra (A,B), A contra (A,C), B contra (A,C). (Expresado un poco patatero, la verdad). Si hubiese una graduación, por ejemplo gravedad, desde nada grave hasta muy grave, a lo mejor se puede proponer algo más sofisticado. Un método que se ha convertido en un estándar tanto para elegir puntos de corte óptimo como para comparar modelos es la curva ROC. Pero para objetivos binarios (aunque hay evoluciones hacia varios tipos, no te puedo recomendar nada concreto). Hay montones de tutoriales y por supuesto librerías R para hacer este tipo de análisis (ROCR y pROC), pero se suele obviar algo que en diagnóstico es esencial para determinar el punto de corte en una prueba (esto es básico en pruebas de detección rápida o screening): la tasa base o "prevalencia". Aun a fuer de resultar un pedante, me gustaría recomendar dos partes de mi tesis doctoral: en http://concejero.wdfiles.com/local--files/tesis/04-comparacion%20curvas%20ROC.pdf (apartado 4.2.5) sobre tasa de prevalencia y http://concejero.wdfiles.com/local--files/tesis/05-medidas%20de%20eficacia.pdf (apartado 5.4) con un ejemplo clásico sobre detección de VIH (la base sobre la que se elaboró la prueba ELISA) Lo malo es que en aquel tiempo (2004) yo no conocía R así que no encontrarás ahí nada sobre cómo aplicarlo en un contexto R. Estoy en ello, aunque por si te resulta útil hay una charla didáctica en el grupo R madrid del 27 febrero de 2014 (http://madrid.r-es.org/page/3/), con código y de hecho la charla está grabada, usando un ejemplo del detecc. cáncer de próstata con PSA (un marcador que se obtiene con una simple prueba de sangre). Perdón por el rollo, se nota que me gusta el tema, ¿no? Si alguna de estas cosas te valen y necesitas ayuda dímelo. Saludos! Pedro El 26/01/2016 a las 21:59, r-help-es-request en r-project.org<mailto:r-help-es-request en r-project.org> escribió: Determinación del punto de corte óptimo (Fernando Sanchez) -- Pedro Concejero E-mail: pedro.concejerocerezo en telefonica.com<mailto:pedro.concejerocerezo en telefonica.com> skype: pedro.concejero twitter @ConcejeroPedro<https://twitter.com/ConcejeroPedro> linkedin pedroconcejero<http://www.linkedin.com/in/pedroconcejero/es> Entusiasta R, me encontraréis aquí gRupo R madRid <http://madrid.r-es.org/> ________________________________ Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede contener información privilegiada o confidencial y es para uso exclusivo de la persona o entidad de destino. Si no es usted. el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción. The information contained in this transmission is privileged and confidential information intended only for the use of the individual or entity named above. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this transmission in error, do not read it. Please immediately reply to the sender that you have received this communication in error and then delete it. Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e proceda a sua destruição [[alternative HTML version deleted]]
Fernando Sanchez
2016-Jan-27 18:40 UTC
[R-es] Determinación del punto de corte óptimo (Fernando Sanchez)
Hola Pedro, Muchas gracias por tu respuesta. En mi caso, las tres categorías están ordenadas. ¿Alguna otra idea de qué se podría hacer? Conozco las curvas ROC y algo de su análisis (sé la existencia de metodologías para optimizar puntos de corte en dos categorías). Lo que yo había hecho para mi caso era seleccionar dos puntos de corte aleatorios y repetir la operación un millón de veces (esto desde luego que es un método muy patatero): datos<-read.table("datos_grupos.txt",header=T) # creo variable donde meteré resultados resultados_obtenidos<-c(0,0,0) for (i in 1:1000000) { # creo de forma aleatoria los dos puntos de corte y los asigno a las ZXs minimo<-min(datos$ZX) maximo<-max(datos$ZX) puntos_de_corte<-runif(2, min =minimo , max = maximo ) corte_moderado<-min(puntos_de_corte) corte_grave<-max(puntos_de_corte) # creo una variable categórica a partir de la variable ZXs ZX_recodificada<-cut(datos$ZX,c(minimo-0.1,corte_moderado,corte_grave,maximo+0.1),labels=c("leve","moderado","grave")) # calculo el porcentaje que clasifica bien tabla_resultados<-table(ZX_recodificada,datos$Severity) aciertos<-(tabla_resultados[1,1]+tabla_resultados[2,2]+tabla_resultados[3,3])/nrow(datos) # guardo los resultados y luego se repite el proceso resultados<-cbind(corte_moderado,corte_grave,aciertos) resultados_obtenidos<-rbind(resultados_obtenidos,resultados) } Por cierto, muchas gracias por el link a los ficheros de tu tesis, me han parecido muy claros e intereresantes. saludos, Fernando De: Pedro Concejero Cerezo <pedro.concejerocerezo en telefonica.com> Para: r-help-es en r-project.org; Fernando Sanchez <fernandsanche en yahoo.es> Enviado: Miércoles 27 de enero de 2016 11:17 Asunto: Re: Determinación del punto de corte óptimo (Fernando Sanchez) Hola, Fernando, El tema de optimización de puntos de corte es un clásico del diagnóstico (enfermo / no enfermo), objetivo que es directamente aplicable a cualquier otro criterio dicotómico, con sólo dos valores. En tu caso, en el que tienes 3, me pregunto si son estrictamente diferentes (p ej 3 tipos de algo) o tienen alguna ordenación. Pero en cualquier caso puedes plantear 3 diagnósticos: A contra (A,B), A contra (A,C), B contra (A,C). (Expresado un poco patatero, la verdad). Si hubiese una graduación, por ejemplo gravedad, desde nada grave hasta muy grave, a lo mejor se puede proponer algo más sofisticado. Un método que se ha convertido en un estándar tanto para elegir puntos de corte óptimo como para comparar modelos es la curva ROC. Pero para objetivos binarios (aunque hay evoluciones hacia varios tipos, no te puedo recomendar nada concreto). Hay montones de tutoriales y por supuesto librerías R para hacer este tipo de análisis (ROCR y pROC), pero se suele obviar algo que en diagnóstico es esencial para determinar el punto de corte en una prueba (esto es básico en pruebas de detección rápida o screening): la tasa base o "prevalencia". Aun a fuer de resultar un pedante, me gustaría recomendar dos partes de mi tesis doctoral: en http://concejero.wdfiles.com/local--files/tesis/04-comparacion%20curvas%20ROC.pdf (apartado 4.2.5) sobre tasa de prevalencia y http://concejero.wdfiles.com/local--files/tesis/05-medidas%20de%20eficacia.pdf (apartado 5.4) con un ejemplo clásico sobre detección de VIH (la base sobre la que se elaboró la prueba ELISA) Lo malo es que en aquel tiempo (2004) yo no conocía R así que no encontrarás ahí nada sobre cómo aplicarlo en un contexto R. Estoy en ello, aunque por si te resulta útil hay una charla didáctica en el grupo R madrid del 27 febrero de 2014 (http://madrid.r-es.org/page/3/), con código y de hecho la charla está grabada, usando un ejemplo del detecc. cáncer de próstata con PSA (un marcador que se obtiene con una simple prueba de sangre). Perdón por el rollo, se nota que me gusta el tema, ¿no? Si alguna de estas cosas te valen y necesitas ayuda dímelo. Saludos! Pedro El 26/01/2016 a las 21:59, mailto:r-help-es-request en r-project.org escribió: Determinación del punto de corte óptimo (Fernando Sanchez) -- Pedro Concejero E-mail: mailto:pedro.concejerocerezo en telefonica.com skype: pedro.concejero twitter @ConcejeroPedro linkedin pedroconcejero Entusiasta R, me encontraréis aquí gRupo R madRid Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede contener información privilegiada o confidencial y es para uso exclusivo de la persona o entidad de destino. Si no es usted. el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción. The information contained in this transmission is privileged and confidential information intended only for the use of the individual or entity named above. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this transmission in error, do not read it. Please immediately reply to the sender that you have received this communication in error and then delete it. Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e proceda a sua destruição [[alternative HTML version deleted]]