Rango Finito

fotoscódigoobservatorioshermanocerdo temas plots

gráficas

Patrones de violación en Colombia (2010-2014)

Vía Alejandro Peláez me enteré de la existencia de este sitio de estadísticas criminales que mantiene la policía colombiana desde 2010. De todos los sitios de datos abiertos colombianos este es probablemente el que más se acerca al ideal soñado de la página sencilla donde se puedan descargar tablas bien armadas. Tomé las tablas de Delitos Sexuales y armé esta gráfica de porcentajes de violaciones por día del año, mes del año, día de la semana y hora del día. Para este conteo uso los delitos categorizados como ‘violación’ del capítulo 1 de esta ley:

Artículo 205. Acceso Carnal Violento. El que realice acceso carnal con otra persona mediante violencia […].

Artículo 206. Acto Sexual Violento. El que realice en otra persona acto sexual diverso al acceso carnal mediante violencia […].

Artículo 207. Acceso Carnal o Acto Sexual en Persona puesta en Incapacidad de Resistir. El que realice acceso carnal con persona a la cual haya puesto en incapacidad de resistir o en estado de inconsciencia, o en condiciones de inferioridad síquica que le impidan comprender la relación sexual o dar su consentimiento […].

violaciones

El 89,5% de las víctimas de violaciones en estos datos son mujeres.

Click en la gráfica para agrandar.

Un clasificador de Bayes falso

Lo que sigue es un pequeño complemento a Tres Modelos que estuve conversando con Santiago hoy: una forma de usar Bayes (asignar la clasificación de acuerdo a qué color tiene la mayor probabilidad en cada punto) aunque no se cuente con la distribución de densidad de las poblaciones que se estudian es asumir alguna distribución de densidad a priori basada en datos empíricos y proceder desde ahí. Hay una discusión filosófica al fondo de eso pero no importa la posición que se tenga el método sigue teniendo sentido. Sobre esto me gustaría escribir algo detallado. Probablemente le dedique otro texto largo pues es un criterio de selección de procedimientos clave en teoría de decisión estadística.

Lo que quiero hacer ahora es un poco distinto y probablemente bastante sucio: con los datos de entrenamiento a mano (¡y solo con ellos!) hay métodos que permiten calcular una función de densidad falsa que se conoce como kernel density estimate (KDE). Para calcular el KDE, además de los datos $x_1, x_2,\ldots,x_m\in\mathbb{R}^n$ se necesita un $h>0$ y una función $$K:\mathbb{R}^n\to \mathbb{R}$$ simétrica con respecto al origen pero no necesariamente positiva con la condición de que $$\int_{\mathbb{R}^n} K = 1.$$ El $K$ estándar es una multinormal centrada en cero y con la matriz identidad como covarianza.

Dados estos ingredientes, a el KDE es una función $f_{K,h}$ definida como sigue: $$f_{K,h}(x)=\frac{1}{mh}\sum_{i=1}^m K\left(\frac{x-x_i}{h}\right).$$

O sea una suerte de promedio local ponderado de las distancias del punto a los datos disponibles.

En el código que sigue tomo la muestra de entrenamiento y para cada color calculo un KDE con $K$ normal bivariada y $h$ elegido con un método estándar para estos menesteres que está descrito acá. Después grafico los KDE en tres dimensiones para ver las dos montañas:


# Primero extraigo las poblaciones de cada color:
blues <- training_sample[training_sample$color == "blue", 1:2]
oranges <- training_sample[training_sample$color == "orange", 1:2]

# Después calculo los KDE en 2D:
dblues <- kde2d(blues[,1], blues[,2], n=200, lims = c(-3, 3, -3, 3))
doranges <- kde2d(oranges[,1], oranges[,2], n=200, lims = c(-3, 3, -3, 3))

# Y finalmente lo grafico:
persp3D(x=doranges$x, y=doranges$y, z= doranges$z, shade=.5, col="orange", 
    alpha= .5, phi=20, box=F, contour=T, theta=-30)
persp3D(x=dblues$x, y=dblues$y, z= dblues$z, shade=.5, col="dodgerblue2", 
    alpha= .5, add=T, phi=20, contour=T,  theta=-30)

Densidades Falsas

Para comparar, aquí las densidades reales de las poblaciones:

Densidad Real

Ahora lo que se puede hacer, por jugar, es proponer una clasificación basada en estas densidades falsas y mirar cómo se diferencia de la clasificación de Bayes. Grafiquemos ambas fronteras, Bayes (rojo) y Bayes Falsa (verde), sobre la muestra de evaluación:


# Primero organizo los KDE en un dataframe:
density.df <- expand.grid(dblues$x, dblues$y)
density.df$blues <- as.vector(dblues$z)
density.df$oranges <- as.vector(doranges$z)

# Ahora defino el Bayes falso (1 es naranja y 0 es azul):
density.df$fake.bayes <- as.numeric(density.df$blues < density.df$oranges)

# Finalmente lo grafico:
grid$color <- apply(grid[,1:2], 1, bayes_classifier)
ggplot(grid, aes(X1, X2, z=color)) +  
    geom_point(aes(X1, X2, fill=as.factor(color)), 
        size=1, col="white", shape=21, alpha=0.5) + 
    geom_point(data=test_sample, aes(x=X1, y=X2, col=color)) +
    stat_contour(bins=1, color="red", size=2) +
    stat_contour(data=density.df, aes(x=Var1, y=Var2, z=fake.bayes), 
        color="forestgreen", bins=1, size=2) +
    scale_color_manual(guide="none", values=c("dodgerblue2", "orange")) +
    scale_fill_manual(guide="none", values=c("dodgerblue2", "orange")) +
    theme_bw() + xlab("x") + ylab("y")

bayes.vs.fake.bayes

Obviamente el Bayes falso es muchísimo más débil que Bayes: se deja manipular demasiado por la muestra de entrenamiento.

Ejercicio: calcular el error de este modelo de Bayes falso en la muestra de evaluación.

28

Otra gráfica sobre cómo la abstención afectó a Santos pero no a Zuluaga:

diferencias

La diferencia de abstenciones es la substracción de las abstenciones sobre el potencial electoral (a nivel municipal) para legislativas y presidenciales. La diferencia de resultados es la substracción de los resultados sobre el total de votos depositados (a nivel municipal) para legislativas y presidenciales. En las legislativas, usé los votos de La U y Cambio Radical sumados como votos de Santos y apenas los de Centro Democrático como votos de Zuluaga.

Es decir, en los lugares donde votó menos gente en comparación con las legislativas a Santos le mejoró la proporción de votos, pero en los lugares donde votó más o menos la misma o más gente Santos salió perjudicado. En cambio con Zuluaga parecería que la diferencia de abstención está desconectada de la diferencia de resultados entre las legislativas y las presidenciales. Una pregunta es qué pasa si en esos lugares donde a Santos le fue bien (por escasez de votantes) se reduce la abstención: hacia qué lado apuntarán esos votos.

Otra cosa notable es la cantidad de municipios donde Santos redujo su votación comparados con uno solo (Providencia) donde Zuluaga sacó menos votos (en porcentaje sobre el total de votos depositados) de los que acumuló Centro Democrático en las legislativas.

26

dos_mapas_educacion
De acuerdo a un censo educativo de 2012 y estimados de población del Dane para el mismo año. Código, datos y otras gráficas en este repositorio.

19

Gracias a José Rafael Espinosa conseguí una base de datos con los resultados de las pruebas Saber 11 de 2011 a nivel de estudiante (~572K entradas). No tiene los resultados de la prueba discriminados por área, sólo el promedio, pero para compensar tiene como 180 variables con datos sobre el estudiante y su entorno. Todo un banquete para este humilde lector de tablas.

Arranquemos con una gráfica que hace rato me debía, mirando cómo los resultados de la prueba cambian de acuerdo al nivel socioeconómico (medido por el “estrato”) del estudiante. Para enriquecerla diferencio colegios privados de públicos. Todo es más o menos como se espera:

saber-estratos-tipodecolegio

Entre más plata, mejores resultados. Menos promocionado pero también bien sabido: las diferencias en resultados entre colegios públicos y privados no son tan drásticas si se toman en cuenta las condiciones socioeconómicas de las familias de los estudiantes. Para entender el comportamiento de las distribuciones de colegios públicos en los estratos altos hay que tomar en cuenta de cuántos muchachos hablamos en cada grupo:

cuentas-colegios-estratos
Estrato 4: 3657 en público y 16258 en privado. Estrato 5: 452 en público y 7292 en privado. Estrato 6: 156 en público y 4634 en privado.

Mejor dicho: a partir de estrato cuatro las familias prefieren fuertemente los colegios privados para sus hijos. Y ahí es más o menos donde empieza la desigualdad.

*

Otra curiosidad: ¿Qué diferencia hace en los resultados que los padres del estudiante sean maestros?

papamaestro-promedios

Pero claro, si un papá es maestro es probable que la familia sea de estrato medio alto y a eso se deba la diferencia. Miremos cómo se distribuyen los hijos de padres maestros por estrato:

cuentas-padresmaestro-estrato

Tal vez esa es la razón de la diferencia. Otra posible razón es el tipo de colegio que eligen para sus hijos. De la gráfica de arriba sabemos que en estrato tres los estudiantes de colegios públicos todavía superan a los de colegios privados. ¿Pasa lo mismo si nos restringimos a hijos de maestros? ¿Y qué hay de los hijos de padres que no son maestros?

cuentas-estratos-maestros

Hipótesis: los maestros colombianos prefieren que sus hijos estudien en colegios privados.

Diagrams

Una librería para hacer diagramas en Haskell.