Datanalytics

Archivo

Archivo para la categoría ‘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:

Disponibles los vídeos sobre periodismo de datos en MediaLab Prado

Viernes, 20 de enero de 2012 Sin comentarios

Informaba el otro día en estas páginas sobre la formación en captura de datos que hubo, dentro del ciclo charlas sobre de periodismo de datos, en MediaLab Prado.

Al final, una de esas imprevisibles circunstancias de última hora me impidió asistir.

Pero, menos mal, ya están disponibles los vídeos para echarles un vistazo este fin de semana.

Localidad, globalidad y maldición de la dimensionalidad

Viernes, 13 de enero de 2012 2 comentarios

Escribo hoy al hilo de una pregunta de la lista de correo de quienes estamos leyendo The elements of statistical learning.

Hace referencia a la discusión del capítulo 2 del libro anterior en el que trata:

  • El compromiso (trade off) entre el sesgo y la varianza de los modelos predictivos.
  • Cómo los modelos locales (como los k-vecinos) tienden a tener poco sesgo y mucha varianza.
  • Cómo los modelos globales (como los de regresión) tienden a tener poca varianza y mucho sesgo.
  • Cómo la maldición de la dimensionalidad afecta muy seriamente a los modelos locales y mucho menos a los globales.

Y voy a tratar de ilustrar esos conceptos con un ejemplo extraído de mi experiencia de consultor.

Trabajé un otoño-invierno en un banco que quería precedir la propensión de sus clientes a adquirir nosequé producto. Nuestros lumbreras de turno pergeñaron un procedimiento —nosotros, en eso, éramos unos mandaos— que consistía en lo siguiente:

  1. Seleccionar unas cuantas variables altamente predictivas.
  2. Partirlas en 2, 3 o 4 tramos.
  3. Asignar a los clientes —unos dos millones— a la casilla (determinada por los tramos de las variables) que les correspondía.
  4. Deducir las propensiones de los clientes de cada casilla, esencialmente, a partir de los de una muestra de unos cuantos miles de clientes seleccionados —aproximadamente— mediante un muestreo estratificado por celda a los que se hacía una especie, digamos, de encuesta.

Si hay pocas variables, hay pocas celdas y a cada una le corresponden muchos casos de muestra. Pero si se quieren utilizar muchas variables, el número de casos por celda comienza a descender. Y en ocasiones, como nos sucedía, había celdas vacías: no existía ninguna clienta de edad avanzada con residencia en municipios de menos de 5000 habitantes, etc.

El problema es el mismo que el plantea el libro bajo el epígrafe de maldición de la dimensionalidad, aunque bajo una óptica algo distinta.

Nuestro modelo de predicción era bastante local. Imaginemos —aunque no era exactamente así—, que predecimos la propensión de los clientes de una celda como la media de la de los seleccionados en dicha celda. Nos podemos preguntar:

  • ¿Qué pasa si en una determinada celda sólo hay un (por ejemplo) cliente seleccionado?
  • ¿Hasta qué punto es fiable extrapolar a una casilla entera las propensiones de, únicamente, doña Juana y doña Miguela?

Las predicciones de cada casilla —una especie de modelo local—, por el hecho de responder a muy pocos sujetos —efecto de la maldición de la dimensionalidad— son muy inestables.

Si el año siguiente se hubiese repetido el estudio —¿lo habrán repetido realmente?— en cada casilla eligirían, probablemente, representantes distintos y, muy probablemente también, variarían mucho los resultados.

Si por un lado el proceso se repitiese año tras año, durante muchos, muchos años obteniéndose la serie de propensiones estimadas p_i y, por el otro, Dios bajase de los cielos y revelase el valor verdadero, p de la propensión en una casilla determinada, entonces podríamos calcular

 \frac{1}{n} \sum \left(p_i -p \right)^2 = \frac{1}{n} \sum \left(p_i - \frac{1}{n} \sum p_i \right)^2 + \left(\frac{1}{n} \sum p_i - p \right)^2

El segundo término representa el sesgo de la predicción en la casilla, la diferencia entre la predicción media (sobre muestras distintas) y el valor verdadero del parámetro. Y podemos conceder que, si el número de años es suficientemente alto, podría considerarse próximo a cero. Y el primero correspondería a la variabilidad de las predicciones entre los distintos años que, de acuerdo con la discusión anterior, sería elevado. Precisamente porque, debido a la maldición de la dimensionalidad, las predicciones están basadas en muy pocos sujetos.

Pero imaginemos que en lugar de utilizar el esquema anterior nos hubiésemos decantado por un modelo de regresión logística basado en unos cuantos cientos o miles de sujetos. Y que cada año, como en la situación anterior, se repitiese el análisis. Seguramente, los coeficientes del modelo no variarían sustancialmente de año en año pero que el error de predicción en algunos subconjuntos de sujetos singulares —piénsese en las celdas de la discusión anterior— estuviese desviado, igualmente desviado, todos los años. Por lo que cabría esperar muy poca variación interanual pero mucho sesgo.

¿Qué es preferible? ¿Cómo pueden mitigarse estos problemas? Pues, primero, siendo conscientes de que existen. Y segundo, leyendo el libro, sea con nuestros 22 voluntarios o por cuenta propia.

Una cifra, ya que estamos con el IRPF

Miércoles, 11 de enero de 2012 Sin comentarios

La entrada de hoy la podía haber hecho en Twitter porque va a ser breve. Pero, ya que he tocado el tema de los impuestos y no tengo mucho tiempo, regalo a mis lectores una cifra sorprendente extraída de las páginas de la Agencia Tributaria.

Mirad los siguientes datos correspondientes al 2009:

Indican que en tal año, 16.7 millones de españoles declararon rendimientos del trabajo por un importe medio de casi 20.000 euros por barba, etc. Pero prestad atención a los rendimientos de actividades económicas, que son

las actividades extractivas, de fabricación, de comercio, de prestación de servicios, artesanía, actividad agrícola, actividad forestal, actividad ganadera, actividad pesquera, actividad de construcción, ejercicio de profesiones liberales, ejercicio de profesiones artísticas y actividades deportivas.

Es decir, los ingresos de los autónomos.

¿Será cierto que nuestro (yo lo soy) rendimiento anual medio es de únicamente 8.275 euros?

¡Joder con nosotros mismos!

Categories: números Tags: ,

Comienza la lectura de “The Elements of Statistical Learning”

Lunes, 9 de enero de 2012 2 comentarios

Mediante la presente, notifico a los interesados en la lectura de “The Elements of Statistical Learning” que esta semana tenemos que dar cuenta de los capítulos 1 (que es una introducción muy ligera) y 2 (donde comienza el tomate realmente).

Esta noche Juanjo Gibaja y yo estudiaremos la mecánica de lectura en común.

Los interesados pueden escribirme a cgb@datanalytics.com para, de momento, crear una lista de correo.

Ingeniería fiscal para mi hipoteca: ¿vendo un futuro?

Martes, 3 de enero de 2012 Sin comentarios

Tengo una hipoteca. El tipo de interés que pago es el Euribor a 12 meses más un diferencial. He usado una calculadora de hipotecas y he descubierto que si el Euribor sube un 1%, mi cuota (anual, es decir, sumando los incrementos de los 12 meses) se incrementaría en 660 euros.

Y me he preguntado: ¿existe algún producto financiero que me dé dinero si sube el Euribor? ¿Existe alguna manera de protegerme de una subida del índice?

Y sí, existen los futuros sobre el Euribor. El contrato tiene un nominal, la muy solemne cifra de un millón de euros, un precio y una fecha de expiración.

Si compro un futuro hoy con fecha de expiración, digamos, el 1 de enero de 2014, y un precio de, por ejemplo, 99.10, entonces:

  • Hoy no pago nada, salvo una comisión de 10 euros.
  • El día 1 de enero de 2014
    • pagaría el interés que me daría un hipotético depósito de un millón de euros a tres meses con un tipo igual al Euribor en esa fecha y
    • recibiría el interés que me daría un hipotético depósito de un millón de euros a tres meses con un tipo igual a (100 – 99.10 =) 0.9%.

Por ejemplo, si el 1 de enero de 2014 el Euribor es del 1%, pagaría 1000000 * 0.01 / 4 = 2.500 euros. Y recibiría 1000000 * 0.009 / 4 = 2.250 euros. En total, perdería 250 euros. Pero si el euribor baja y se queda en el 0.8%, ganaría 250 euros.

Obviamente, para protegerme de subidas del Euribor, no compraría sino que vendería un futuro. Yo recibiría el interés correspondiente al Euribor en la fecha de expiración y pagaría la tasa deducida del precio de venta del futuro. Si el Euribor subiese un 1% desde la fecha de compra, ganaría 2.500 euros que compensarían el coste añadido de mi hipoteca.

El hedge no es perfecto: la hipoteca tiene un nominal y unos vencimientos que no puedo replicar usando los contratos habituales. Además, los productos son distintos: mi hipoteca está referenciada al Euribor a 12 meses y los futuros, al Euribor a 3 meses. Pero su evolución es, históricamente, paralela, como se puede apreciar en la siguiente figura (gentileza de la Wikipedia),

que muestra la evolución del Euribor a una semana (verde), tres meses (azul) y un año (rojo) durante los últimos años.

La última salvedad es que no me interesa demasiado cerrar mi futuro en una fecha de vencimiento concreta. Pero existen unos futuros continuos —que no tengo muy claro cómo funcionan: creo que son una media ponderada de futuros con distintas fechas de vencimiento— que me permitirían salir del contrato no en una fecha concreta sino cuando me conviniese. Pero me gustaría saber primero cómo funcionan exactamente.

Y bueno, si finalmente me pongo torero y vendo el futuro, os contaré qué tal me fue y cómo me afectó la letra pequeña de este tipo de cosas.

Coda: quien quiera saber más sobre este tipo de técnicas, puede leer este artículo.

IVA, IRPF y cosas que no entiendo

Lunes, 2 de enero de 2012 4 comentarios

Sé lo justito sobre estos temas. Lo justito como para no entender nada. Seguro que las cosas no son tan fáciles como yo creo entenderlas y estoy seguro de que algún lector me las sabrá complicar (con algún párrafo que comience algo así como no son tan fáciles las cosas porque…) para que las comprenda.

En España hay dos grandes impuestos, IVA e IRPF. El IVA es un porcentaje (prácticamente) fijo del consumo: si consumes 100 pagas el mismo porcentaje que si consumes 1000. El IRPF es un porcentaje creciente de los ingresos: si ganas 100, pagas un porcentaje menor que si ganas 1000.

Como, además, la gente con menos ingresos consume un porcentaje mayor de su renta (tiene menos disponibilidad para el ahorro), el pocentaje de lo que dedica al consumo suele ser mayor que el de la gente con mayor renta (que no paga IVA por el dinero que ahorra y no consume).

De lo anterior se deduce que la gente con menos ingresos debería preferir que el peso del IVA fuese menor que el del IRPF. Y al revés la de más ingresos, ¿no?

Pues además de dos impuestos, en España hay dos grandes partidos, uno de izquierdas (y supuestamente valedor de quienes tienen menos renta) y otro de derechas (supuestamente valedor de la otra mitad del país).

Pues resulta que el primero, el de izquierdas, estando en el gobierno incrementa el IVA. Con la oposición del de derechas, claro. Y el de derechas, a la semana de llegar al poder, incrementa el IRPF. Y con la presumible oposición del de izquierdas.

E incluso la prensa de uno y otro lado aplaude o desaprueba no tanto en función del supuesto interés de sus lectores (sean de la izquierda o de la derecha) sino de las opciones, antinaturales, a mi juicio, de sus partidos afines.

No entiendo nada.

Categories: números Tags:

Captura de datos, MediaLab Prado y NeedleBase

Viernes, 30 de diciembre de 2011 5 comentarios

Ya he hablado en ocasiones anteriores en este foro de MediaLab Prado. Y también de los talleres que está realizando sobre periodismo de datos.

El día 12 de enero —y a ver qué invento para poder acudir— habrá una sesión sobre captura de datos uno de cuyos talleres tratará sobre scrapping usando NeedleBase.

Anoche vi el siguiente vídeo sobre esta herramienta,

y quedé impactado sobre las cosas que puede llegar a hacer.

¿Qué os parece la herramienta? ¿Nos veremos el día 12?