Datanalytics

Archivo

Entradas Etiquetadas ‘estadística’

La frontera bayesiana en problemas de clasificación (simples)

Miércoles, 1 de febrero de 2012 Sin comentarios

Una de las preguntas formuladas dentro del foro desde el que seguimos la lectura del libro The Elements of Statistsical Learning se refiere a cómo construir la frontera bayesiana óptima en ciertos problemas de clasificación.

Voy a plantear aquí una discusión así como código en R para representarla (en casos simples y bidimensionales).

Supongamos que hay que crear un clasificador que distinga entre puntos rojos y verdes con la siguiente pinta,

library( mvtnorm )
library( MASS )

n <- 100
sigma <- 0.5

c.r <- data.frame( x = -1:1, y = 1:-1 )
c.v <- data.frame( x = c(-1,1), y = c(-1,1) )

muestra <- function( n, centros, sigma ){
	n.x.centro <- sample( nrow( centros ), n, replace = T )
	tmp <- mvrnorm( n, mu = c(0,0), Sigma = diag( 2 ) * sigma )
	tmp <- tmp + centros[n.x.centro,]
	tmp
}

muestra.r <- data.frame( clase = "red", muestra( n, c.r, sigma ) )
muestra.v <- data.frame( clase = "green", muestra( n, c.v, sigma ) )

mi.muestra <- rbind( muestra.r, muestra.v )

plot( mi.muestra$x, mi.muestra$y,
      col = as.character( mi.muestra$clase ) )

es decir, así:

Los puntos rojos están distribuidos según P(x|R), una mezcla de tres distribuciones normales esféricas con centros en los puntos (-1,1), (0,0) y (1,-1) y desviación estándar 0.5. Los verdes, según P(x|V), una distribución similar aunque con centros en (-1,-1) y (1,1):

veros <- function(w, medias, sigma = 5){
	mean( dmvnorm( medias, w, sigma = diag( length( w ) ) / sigma ) )
}

veros.malla <-function(malla, medias, sigma = 5){
	apply( malla, 1, function( x ) veros( x, medias, sigma ) )
}

tmp <- seq( -3, 3, by = 0.03 )
malla <- cbind( x = rep( tmp, each = length(tmp) ),
                y = rep( tmp, length(tmp)) )

bayes.r <- veros.malla( malla, c.r, sigma )
bayes.v <- veros.malla( malla, c.v, sigma )

contour(x=tmp,y=tmp,z=matrix(bayes.r, length(tmp)) )
points(muestra.r$x, muestra.r$y,col="red")

contour(x=tmp,y=tmp,z=matrix(bayes.v, length(tmp)) )
points(muestra.v$x, muestra.v$y,col="green")

Gráficamente,

y

La frontera bayesiana óptima está basada en el siguiente razonamiento, valga la redundancia, bayesiano:

P( C|x ) P(x) = P( x | C ) P(C)

donde:

  • P(C|x) es la probabilidad de que la clase/color sea C en el punto x.
  • P(x) es la probabilidad de observar el valor x.
  • P(x|C) es la probabilidad de que x sea un punto de la clase/color C.
  • P(C) es la probabilidad de la clase C, que suponemos igual en nuestro ejemplo (aunque sería muy desigual en un problema de detección del fraude, por ejemplo, donde el porcentaje de casos fraudulentos es muy bajo).

Bajo las condiciones anteriores,

\frac{ P( R|x )}{P(V|x)} = \frac{ P( x|R )}{P(x|V)}

y, no habiendo penalizaciones asimétricas según la dirección del error, el criterio óptimo de clasificación es asignar la clase R cuando P( R|x ) > P(V|x) y, de acuerdo con la fórmula anterior, cuando P( x|R ) > P( x|V ). Es decir, la frontera entre las zonas en que es más probable que una observación proceda de una u otra distribución (es decir, sea de una u otra clase) es

contour(x=tmp,y=tmp,
        z=matrix(bayes.v - bayes.r, length(tmp)),
        levels = 0, labels = "" )
points( mi.muestra$x, mi.muestra$y, col = as.character(mi.muestra$clase) )

que tiene, para este caso concreto, el siguiente aspecto:

Y mañana, ¡a Iguazú!

Hay (micro)vida más allá de la (micro)muerte

Lunes, 30 de enero de 2012 Sin comentarios

Hablamos ya hace un tiempo de las micromuertes. Ahora toca traer a la atención de mis lectores un concepto asociado, el de las microvidas.

Una microvida corresponde a una esperanza de vida de media hora. Malgasta una microvida quien fuma dos cigarros, bebe siete unidades de alcohol (equivalentes a  un litro de cerveza) o vive un día con un sobrepeso de 5 kg.

Microvidas y micromuertes son conceptos análogos, pero no enteramente equivalentes. Ambos nos ayudan a cuantificar pequeños riesgos. Sin embargo, el efecto de las microvidas es acumulativo mientras que el de las micromuertes no: quien haya terminado vivo su sesión de parapente, habrá puesto a cero su contador de micromuertes, pero no así quien haya fumado su segundo cigarro.

En el artículo original de Spiegelhalter aparece también un cálculo aproximado del valor de una microvida y una micromuerte:

El UK National Institute for Health and Clinical Excellence (NICE) sugiere que el National Health Service pague hasta 30.000 libras por un tratamiento que alargue la vida en un año, es decir, unas 17.500 microvidas. Esto equivale a valorarlas en unos £1.70. El UK Department of Transport valora una vida estadística en 1.600.000 libras. Esto significa que están dispuestos a pagar 1,60 libras para evitar una probabilidad de muerte de una en un millón, es decir, una micromuerte.

¿Serán similares las cifras en España? ¿Alguna idea sobre cómo averiguarlo?

Limpieza de cartera y miscelánea de artículos

Miércoles, 25 de enero de 2012 Sin comentarios

He decidido limpiar mi cartera. Llevo en ella unos cuantos artículos impresos que me acompañan desde hace mucho y que, por un lado, me da pena tirar y, por el otro, no me aportan en el día a día. Voy a reciclar el papel sobre el que los imprimí y, a la vez, dejar en enlace a ellos por si a mí un día (o a alguno de mis lectores otro) me da por volver sobre ellos. Son:

IBM sobre Excel como herramienta estadística

Lunes, 26 de diciembre de 2011 1 comentario

Hemos tratado el tema previamente en entradas como esta o esta. Pero es ahora IBM el que abunda en el tema mediante la publicación de un documento, The Risks of Using Spreadsheets for Statistical Analysis, cuyo nombre lo dice, poco más o menos, todo.

Cierto que el documento tiene como objetivo promover el uso de SPSS como alternativa y de ello se ocupa largamente su segunda mitad. Por eso es la primera la más relevante para mis lectores.

Discute en ella por qué son populares las hojas de cálculo, sus usos y sus abusos y cómo estos suponen un riesgo importante para las organizaciones que dependen de ellas para el análisis de su información. Porque, efectivamente, y entre otras cosas

  • las hojas de cálculo son lenguajes de programación y,
  • en particular, lenguajes de programación muy proclives a determinados tipos de errores.

Existe, doy fe, una obsesión por Excel en determinados ámbitos del que espero que a mis lectores les resulte más fácil sustraerse esgrimiendo los argumentos de IBM.

Categories: estadística, excel Tags: , ,

p, n y mi moneda de la suerte

Martes, 20 de diciembre de 2011 5 comentarios

Tengo una moneda de la suerte. Es una moneda de cinco duros, del mundial 82. No es tanto de la suerte (en esta bitácora somos gente seria, carajo) como —tengo razones para sospechar— una moneda sesgada.

De hecho, el otro día hice un experimento: la tiré al aire 20 veces y obtuve 14 caras. De acuerdo con R,

1 - pbinom( 14, 20, 0.5 )
[1] 0.02069473

puedo rechazar la hipótesis de que es una moneda cabal con un nivel de confianza (p-valor) de 0.021.

Pero mi gato dijo que 20 era poco y, como es gato y tiene más tiempo libre que yo, repitió el experimento lanzándola al aire 2000 veces. Y obtuvo 1045 caras. Como

> 1 - pbinom( 1045, 2000, 0.5 )
[1] 0.020921

también rechazó la hipótesis de equiprobabilidad con prácticamente el mismo nivel de confianza, 0.021.

Lo cual dio lugar a una discusión la mar de interesante y que no sé cómo zanjar. Porque el muy ladino de mi gato me vino con que si había leído que

[A] given p-value in a large trial is usually a stronger evidence that the treatments really differ than the same p-value in a small trial of the same treatments would be

en un artículo de Peto et al. (Design and analysis of randomized clinical trials requiring prolonged observation of each patient, 1976). Sin embargo, mi vecina del segundo comenta que cuando era moza y festejaba, leyó en alguna parte que

It is not true . . . that valid conclusions cannot be drawn from small samples; if accurate methods are used in calculating the probability [the p value], we thereby make full allowance for the size of the sample, and should be influenced in our judgement only by the value of probability indicated

Creo que se refería a la página 182 de Statistical methods for research workers, de Ronald Fisher. Y por si fuera poco, el chino que regenta el que fuera el Mesón Cascorro en mi barrio, me viene con que si un tal Bakan dejó escrito en 1966 en un artículo que se llama Test of significance in psychological research que cuando los p-valores son iguales, los estudios con menor número de sujetos aportan más evidencia contra la hipótesis nula.

Señores lectores de esta bitácora: estoy hecho un lío. ¿A quién damos la razón: a mi gato, a la vecina del segundo o al chino del ex Mesón Cascorro?

Categories: estadística Tags:

¿La correlación “del siglo XXI”?

Lunes, 19 de diciembre de 2011 3 comentarios

Bajo el título Detecting Novel Associations in Large Data Sets se ha publicado recientemente en Science un coeficiente alternativo a la correlación de toda la vida para cuantificar la relación funcional entre dos variables.

El artículo (que no he podido leer: si alguien me pudiera pasar el pdf…) ha tenido cierto impacto, al menos momentáneo, en la red. Puede leerse un resumen en esta entrada u otro bastante más cauto en la de A. Gelman. Existe información adicional (e incluso código en R) en esta página.

Las dos ideas motivadoras de este método son:

  • Generalidad: poder detectar cualquier tipo de relación funcional entre dos variables, no únicamente relaciones lineales (como el coeficiente de correlación).
  • Homegeneidad: el estadístico debería ser similar cuando se comparen configuraciones con una relación funcional distinta paro un nivel de ruido análogo (véase la figura adjunta).

En muchos contextos, el análisis de un conjunto de datos comienza por el estudio de una matriz de correlaciones entre variables tal como

que resalta la relaciones de dependencia lineal entre conjuntos amplios de variables. Con el aporte de este nuevo artículo, tal vez podrían identificarse otro tipo de relaciones funcionales igualmente interesantes. Con tiempo, le echo un vistazo.

Gráficos de embudo para controlar la varianza en muestras pequeñas

Jueves, 15 de diciembre de 2011 1 comentario

Publiqué hace un tiempo una entrada en esta bitácora sobre el problema que representa la desigualdad de los tamaños muestrales a la hora de comprender cierto tipo de datos, como por ejemplo, los que trata de representar el gráfico

que muestra la incidencia del cáncer de riñón en distintas zonas de en EE.UU. Como indiqué entonces, los valores extremos se encuentran en zonas menos pobladas: cuanto menor es la población, más probables son las proporciones inhabituales.

Los gráficos de embudo son una alternativa pensada para evitar este tipo de sesgos. Por ejemplo

relaciona la proporción de casos de cáncer con el tamaño de la población añadiendo, si se me permite el término, curvas de isosignificancia para facilitar la comparación entre entidades desiguales en tamaño.

El que quiera saber más al respecto, tiene un artículo de Spiegelhalter sobre gráficos de embudo. Además, existe la posibilidad de crearlos, cuando menos, con

The Little Handbook of Statistical Practice

Lunes, 5 de diciembre de 2011 Sin comentarios

Quiero hacer publicidad aquí —y, de paso, guardarme una nota para mí mismo para futura referencia— del Little Handbook of Statistical Practice, una colección de breves artículos sobre diversos temas de relevancia estadística recopilados por Gerard E. Dallal.

En particular, merece cierta atención su recopilación de Statistical Notes del British Medical Journal.

Categories: estadística Tags:

Google Translate, tamaños muestrales y sesgos

Miércoles, 30 de noviembre de 2011 Sin comentarios

Supongo que mis lectores estarán al tanto de Google Translate y tal vez sepan que utiliza métodos estadísticos para traducir: a partir de una muestra amplia de textos con el mismo contenido pero en distintos idiomas llega a deducir que maison, casa y house son una misma cosa.

Pero la yustaposición puede dar lugar a situaciones jocosas. He aquí un ejemplo con el que la serendipia me ha hecho tropezar recientemente.

Supongo que habréis encontrado alguna vez ese texto que comienza por lorem ipsum dolor sit amet… y que los maquetadores y editores gráficos usan como relleno para mostrar su trabajo. Aparece en tantos sitios que… parece haber confundido al traductor de Google como se aprecia a continuación. Si pido traducir, por ejemplo, la frase Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus que forma parte de ese texto,

obtengo la traducción

Y la traducción de

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

es

Lorem ipsum dolor sit amet, enhanced mental focus, can help you save time, money, and Hawaii. To take a trivial example, which of us ever undertakes laborious physical exercise, as well as from around the world. No products to list in this category will be sent to the item below. There is no product, you are going to electronic typesetting, remaining essentially unchanged.

Supongo que el tamaño muestral de los textos en latín es sustancialmente menor que la de otros idiomas. Lo cual, aparte de enseñarnos que nadie ni nada es perfecto, nos recuerda que siempre tenemos que asegurarnos de que contamos con un número suficiente de casos para los fines que tenemos en mente.

Categories: estadística Tags: ,

Doping, héroes patrios y… estadística

Martes, 29 de noviembre de 2011 Sin comentarios

Este verano traté de recorrer en bici la ruta del Viaje a la Alcarria de Cela. No lo acabé porque se lesionó mi compañero a la altura de Pareja y tuvimos que regresar a Madrid en furgoneta. Pero recuerdo que, encarando algún repecho, con la lengua afuera, me comentaba qué duro es esto de la bici. Aproveché luego, en la fuente de algún pueblo, con las camisetas empapadas, para comentarle lo despiadado del circunstancial televidente estival, faria en mano, exigiendo a los ciclistas patrios demarres sobrehumanos en el Tourmalet.

No hay como coronar puerto y celebrarlo con pan, vino y macarrones. Pero las exigencias del deporte profesional moderno y los incentivos de toda clase que corrompen su esencia lo exponen a la lacra del doping. Mucho se puede hablar al respecto desde muchos puntos de vista, pero en estas páginas lo examinaré desde el estadístico. En particular, trataré de justificar que la frase me hicieron un control antidoping y dio negativo prácticamente no aporta información. Y, como consecuencia no me dopo porque me dio negativo es falaz (que no es lo mismo que falsa).

El estudio es análogo a otro que realicé hace un tiempo sobre polígrafos y terrorismo. Supongamos que tenemos 10000 deportistas de los que se dopan, por ejemplo, 50 con una hipotética hormona X.

Los biólogos de los laboratorios antidoping saben que para una persona que no se dopa (que se dopa) el nivel de hormona X en la orina tiene la distribución dada por la curva negra (roja) que aparece en

que ha sido construido usando

total <- 10000
dopings <- 50
limpios <- total - dopings
 
plot( dbeta( 0:100 / 100, 2,6), type = "l", main = "Distribución hormona X",
        xlab = "umbral", ylab = "", yaxt = "n"  )
lines( dbeta( 0:100 / 100, 5, 3 ), col = "red")

Es decir, para una persona que no se dopa, el nivel típico medido en laboratorio (teniendo en cuenta errores de medida, etc.) es de alrededor de 20, aunque pueden obtenerse en algunos casos medidas tan altas como 40 o 60. Para quienes se dopan, el nivel típico (curva de densidad roja) es mayor.

El comité encargado de velar por la limpieza de la competición tiene que elegir un criterio para decidir a quién se le sanciona y a quién no. Obviamente, a dicho comité le horroriza la posibilidad de equivocarse y arruinar la carrera de un deportista honesto. Además, la prensa, la afición, los patrocinadores, el ministro del ramo, la canciller, etc., se prestan para defender a cierraojos a su campeón patrio. ¡Y no digamos nada cuando en el comité hay franchutes alevosos, esos que nos tienen secular envidia!

Dados los condicionantes existentes, para minimizar la posibilidad de error (de tipo I), el comité elige un umbral de detección muy elevado. El número de deportistas limpios para cada percentil de detección es

freq.limpios <- limpios * ( 1 - pbeta( 0:100 / 100, 2, 6))

y si se quiere que el número esperado de falsos positivos sea menor que 1 (es decir, cometer menos de una injusticia al año), el percentil en el que hay que ubicar el umbral es

freq.dopings <- dopings * ( 1 - pbeta( 0:100 / 100, 5, 3))
min( which( freq.limpios < 1 ) )

Pero en ese umbral, sólo se detectan

freq.dopings[ min( which( freq.limpios < 1 ) ) ]
# 3.68

casos reales de doping; es decir, de los cincuenta casos verdaderos de doping

dopings - freq.dopings[ min( which( freq.limpios < 1 ) ) ]
# 46.31

salen limpios. De ahí que mi análisis ha salido negativo sea un juicio que apenas aporta información: la probabilidad a priori de estar limpio es

limpios / total

y a posteriori es, prácticamente, la misma.

Eso sí, después de un positivo es

( freq.dopings / freq.limpios )[ min( which( freq.limpios < 1 ) ) ]
# 5.33

veces más probable haber consumido la hormona X que no haberlo hecho. A pesar de lo cual, sistemáticamente, todos los deportistas que dan positivo esgrimen mil argucias legales (¡mira que echarle la culpa al solomillo, con lo que me gusta!) para probar que pertenecen a ese potencial grupúsculo de víctimas del despiadado método científico.

¡Salud y bicicleta!