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]]