He mudado el blog (por ahora?, para siempre?)

A modo de prueba he empezado a publicar en el blog El Útero de Marita. Ahora estoy en el dominio http://aniversarioperu.utero.pe/

No se sabe si este movimiento es efímero, y regrese a publicar en este blog. Solo el tiempo lo dirá.

Anuncios

Cómo vota Perú en el TPP (“tratado anti-internet”)?

Hace un par de semanas, el portal Wikileaks publicó el documento secreto correspondiente al borrador de las negociaciones del capítulo de propiedad intelectual del TPP (Trans-Pacific Partnership).

Ya han habido varias alertas acerca de las implicancias de estas negociaciones (una introducción al tema aquí). Además de ser negociaciones que se realizan de manera secreta, preocupa que esté en riesgo el libre acceso a Internet y el componente de propiedad intelectual que pueda dificultar el acceso a medicamentos.

Se supone que este tratado está apunto de ser firmado por el Perú antes de fin de año y gracias a Wikileaks recién podemos darnos cuenta de lo que realmente se ha estado negociando a puerta cerrada.

El documento filtrado al público tiene 96 páginas (si se bajan el PDF) y está disponible aquí. A primera vista se pueden ver los temas que se han discutido y la manera de cómo ha votado cada país. Algunas propuestas parecen provenir de ciertos países mientras que otros votan a favor o se oponen (ver figura 1).

Figura 1. Algunos países votan a favor, otros se oponen.

Figura 1. Algunos países votan a favor, otros se oponen.

Podemos dar una lectura a todo el PDF para enterarnos “cómo es la cosa”. Pero, siendo este un blog nerd, podemos hacer un “data-mining” rudimentario para rápidamente poder averiguar algunos detalles:

  1. Cuántas veces Perú vota como país de manera opuesta a Estados Unidos?
  2. Cuántas veces Perú vota igual que Estados Unidos?
  3. Podemos averiguar como vota algún país vecino? digamos Chile, vota de manera diferente a Perú?
  4. Chile se opone o vota de manera similar que Estados Unidos?
  5. En qué puntos específicos hay discrepancias en las votaciones

Podría ponerme a contar la votaciones una por una pero me iba a demorar una enternidad. Entonces escribí un script in Python para hacer este data-mining (script completo en la sección geek al final de este post).

Lo bueno es que Wikileaks publicó el documento como PDF conteniendo texto (no como imágenes). Entonces, es bien fácil convertir el PDF a TXT y proceder con el minado de datos.

pdftotext Wikileaks-secret-TPP-treaty-IP-chapter.pdf texto.txt

Mi script funciona de la siguiente manera:

  1. Lee el documento TXT línea por línea
  2. Si encuentra una línea que contenga la palabra Article se pone alerta y se fija si hay alguna línea con las iniciales de los países PE, CL, US (osea Perú, Chile y Estados Unidos).
  3. La línea de texto que indica la votación tiene un patrón consistente: países oppose/propose más países.
  4. Entonces el script divide la lista de países en dos bandos, los que están a la derecha e izquierda de las palabras clave oppose/propose
  5. Una vez divididos los bandos, solo es cuestión de contar cuántas veces se repiten las iniciales y llevar la cuenta el bando.

Estos son los resultados:

Conteo de votos de PE versus US
propose_together 26
oppose_together 6
oppose_each_other 23

---------------------

Conteo de votos de PE versus CL
propose_together 36
oppose_together 22
oppose_each_other 8

---------------------

Conteo de votos de US versus CL
propose_together 16
oppose_together 2
oppose_each_other 32

Se supone que ambos países, Perú y Chile, tenían la intención hacer propuestas alternativas a las que figuran en el TPP (ver aquí y aquí).

Pero al parecer, esto puede haber quedado en intenciones, al menos viendo la manera cómo ha estado votando Perú.

Perú ha votado igualito que Estados Unidos 32 veces y se ha opuesto (votado diferente) sólo 23 veces. Mientras que Chile ha votado igual que EEUU solo 18 veces y se ha opuesto 32 veces.

Parece que Chile se opone mucho a las propuestas apoyadas por EEUU mientras que Perú vota en tándem. Mi script me dice que:

Chile se opone a US y PE 9 veces

y se opone en estos artículos del TPP:

* Article QQ.C.2: {Collective and Certification Marks}
    [US/PE/MX41/SG propose; AU/NZ/ VN/BN/MY/CL/CA oppose: 2. Pursuant to
* Article QQ.D.11: [CL/SG/BN/VN/MX propose82; AU/PE/US/NZ/CA/JP oppose:
* Article QQ.D.12: {Homonymous Geographical Indications}
    [NZ/CL/VN/MY/BN/SG/MX propose84; PE/US/AU oppose: 1. Each Party may
    [CL propose; AU/US/PE/NZ/VN/SG/MY/BN/MX/CA/JP oppose: 2. The Parties
    [CL/SG/BN/MX propose; AU/PE/US/NZ/CA/JP oppose: Annex […] Lists of
* Article QQ.E.9: [US/PE/AU propose; 101 CL/VN/MY/BN/NZ/CA/SG/MX oppose:
* Article QQ.H.7: {Criminal Procedures and Remedies / Criminal Enforcement}
    2. [US/AU/SG/PE propose; CL/VN/MY/NZ/CA/BN/MX oppose: Willful
* Article QQ.I.1:267 {Internet Service Provider Liability}
    280 [US/PE/SG/AU propose; CL/NZ/VN oppose: A Party may request consultations with the other Parties to

Ahora que tenemos una idea a ojo de buen cubero cómo van las votaciones de Perú, Chile y EEUU, además de los temas potencialmente picantes. Podemos leer mejor el documento filtrado por Wikileaks.

** Spoiler ** (Uno de esos temas tiene que ver con la denominación de origen del Pisco. Chile propone, Perú y EEUU se oponen).

PD. este post se inció a sugerencia de un tuitero amixer.

Sección geek

El script corre de la siguiente manera:

python leeme_votaciones.py texto.txt

Análisis del comportamiento tuitero de tu congresista

Como ya saben, hace unos días terminó la discusión, e idas y venidas, acerca del grupo de trabajo de derechos humanos del Congreso, presidido por la congresista fujimorista Martha Chavez (@MarthaChavezK36).

La discusión degeneró tanto que llegó al tuiter. La congresista Martha Chavez anunciaba en tuiter sus planes de trabajo dentro de la comisión y respondía a uno que otro insulto tuitero. Era notable la cantidad de tuits emitidos por la congresista. Pero, fueron muchos tuits? pocos? en qué horas acostumbra tuitar la congresista?

Usando herramientas de Linux, Python y unas cuantas librerías “open source” podemos analizar el comportamiento tuitero de Martha Chavez.

Descargué del tuiter los 3200 tuits más recientes de la congresista. Para eso usé un cliente de tuiter usable desde la consola Linux.

t timeline -c -n 3200 MarthaChavezK36 > MarthaChavezK36.csv

Aquí ven parte de los tuits descargados (click para ampliar).

3200 tuits más recientes de Martha Chavez

Hice un gráfico del número de tuits por día, usando Python.

timeline de la congresista Martha Chavez

timeline de la congresista Martha Chavez

Este timeline comienza el 24 de julio. Vemos que tuvo bastante actividad el 28 de Julio, mediados de Septiembre (cuando se discutía sobre la unión civil de parejas del mismo sexo), primera y segunda semana de Octubre (en esa época se tuiteaba sobre la renuncia de Fujimori por fax), primera semana de Noviembre (cuando se armó el chongo de su elección como coordinadora del grupo de trabajo sobre derechos humanos).

Parece que su destitución del grupo de DDHH no hizo que Martha Chavez tuitee tanto como cuando se hablaba de la unión civil (muy revelador!).

Pero supongo que Martha Chavez tuitea en sus horas libres, cuando ya terminó sus horas de trabajo en el congreso, además de los fines de semana.

Podemos ver esto si usamos sus tuits para generar un “punchcard”:

python analizar_tuits.py MarthaChavezK36.csv | python punchcard.py -f punchcard_Martha_Chavez.png

horas de tuiteo de Martha Chavez

Esto es alucinante! La congresista tuitea todos los días de la semana. Tuitea a forro entre las 8 y 10 de la mañana (ni bien llega al Congreso?). Tuitea con mayor fuerza los días Viernes. El menor número de tuits a la 1:00pm hace suponer que a esa hora almuerza. Sábados y Domingos, no descansa, tuitea tanto como los días lunes. Y parece que se va a dormir a la 1:00 am. Al parecer duerme menos de 8 horas (eso no es saludable congresista!).

Este nivel de tuits emitidos por Martha Chavez es muy alto? muy bajo? Podemos hacer una comparación con un tuitero consumado, neto y nato. Comparemos con el Útero de Marita:

Este es el punchcard del utero.pe.

punchcard uterope

Vemos que, al parecer, el útero.pe tuitea menos que la congresista. Uterope tuitea muy poco los viernes, sábados y domingos (a excepción de las 9:00pm cuando tuitea con furia, debe ser que a esa hora pasan los noticieros dominicales). Qué hace el uterope los viernes y fines de semanas que no tuitea? Debe tener buena vida. También tuitea bastante los jueves.

Aqui les dejo el código necesario para hacer este tipo de análisis (?) con cualquier tuitero. Pero fíjense que el tuitero no ande borrando sus tuits ni use tuits programados ya que malograría el “análisis”.

Sección geek

Código para producir el gráfico timeline y producir las fechas en formato unix, necesarias para dibujar el punchcard. El programa que hace el punchard lo saqué de aquí: https://github.com/aaronjorbin/punchcard.py

Inseguridad ciudadana para histéricos

Ministros y ex-primer ministros de este gobierno coinciden en pensar que la inseguridad ciudadana es una percepción, ilusión de la gente, producto de estados mentales histéricos y que no hay que quejarse tanto.

Lo cierto es que según los datos del INEI. El número total de delitos a nivel nacional está aumentando:

Número total de delitos. Fuente INEI http://www.inei.gob.pe/media/MenuRecursivo/Cap08005.xls

Figura 1. Número total de delitos. Fuente INEI http://www.inei.gob.pe/media/MenuRecursivo/Cap08005.xls

Estadísticas frecuentistas

Una regresión lineal nos confirma la tendencia:

Regresión lineal de número total de delitos versus año.

Figura 2. Regresión lineal de número total de delitos versus año.

La regresión lineal (y el gráfico) nos dice que conforme pasan los años ha aumentado la delincuencia (R2 = 0.67) de manera significativa (p-value = 0.008).

Se observa que entre los años 2008 y 2011 ocurrió un punto de quiebre y la delicuencia aumentó, pero no podemos apuntar con precisión en qué año comenzó esta racha de mayor número de delitos. Además que los datos no se ajustan muy bien a la línea de tendencia. Pareciera que el aumento de delitos no es lineal, parece ser exponencial! Esta incertidumbre es parte de las limitaciones de las estadísticas que estoy usando, esta corriente llamada estadísticas frecuentistas.

Estadísticas bayesianas

Pero afortunadamente existen las estadísticas bayesianas que nos pueden dar algo más de información respecto a este tema.

Estas estadísticas nos pueden ayudar a estimar en qué año aumentó la delincuencia. Por ejemplo, el promedio de delitos anuales antes de este incremento puede ser considerado como la variable \lambda_1, el promedio de delitos después del punto de quiebre pueder ser la variable \lambda_2, y el año en que ocurrió el punto de quiebre puede ser la variable tau.

Podemos estimar el rango de valores más probables que puede tener cada variable si es que usamos simulaciones de números aleatorios.

[Paréntesis]
Los estadísticos bayesianos conocen la probabilidad más alta de estos valores como probabilidad posterior. Por ejemplo, cuando tú amig@ lector(a) recibes un email (digamos de Gmail), la empresa Google tiene un software que aplica estadísticas bayesianas al contenido del mensaje. Lo que hace es buscar palabras clave que indiquen que el email recibido es spam. La probabilidad inicial que un mensaje sea Spam puede ser 0.5 (osea 50%), pero si el contenido tiene las palabras “viagra”, “penis”, “enlargement”. Existirá una mayor probabilidad que este correo es spam, (a esta probabilidad se le llama probabilidad posterior ya que se obtiene luego de examinar la evidencia), y el software de Google lo enviará directamente a la carpeta Junk. Por eso las estadísticas bayesianas son importantes, y además las usas a diario sin darte cuenta.
[/Paréntesis]

Volviendo a nuestro problema, necesitamos ver cuáles son las probabilidades posteriores de nuestros datos de número de delitos a nivel nacional. Felizmente, el lenguaje de programación Python tiene una librería muy chévere para hacer estadísticas bayesianas. Es el paquete pymc. Entonces solo es cuestion de simular muchas veces los valores de números totales de delito antes y después del incremento, y el año de incremento en la tasa delincuencial (osea \lambda_1, \lambda_2, y tau).

Realicé una simulación de 50 mil generaciones usando una cadena Markov Monte Carlo, descarté las primeras 10 mil generaciones y dibujé los resultados:

Vemos que hay una diferencia notable entre el total esperado de delitos antes (\lambda_1) y después (\lambda_2) del incremento (casi 160 mil delitos antes y 230 mil delitos luego del incremento de la delincuencia).

También vemos que es más probable que en el 6to año (osea año 2011) ocurrió la aceleración de la delincuencia en el Perú.

Podemos combinar estas tres variables en un solo gráfico:

Este gráfico muestra los valores esperados de delito antes, después y durante la aceleración en el nivel de delicuencia. Vemos que esto ocurrió del año 2010 al 2011.

Ahora, pregunto qué acontecimiento ocurrió entre 2010 y 2011 que fue el causante del aumento de la delicuencia en nuestro país? El que sepa “que levante la mano”.

Sección geek

Aquí los datos que he usado:

Auí está el código para hacer la regresión lineal en R:

Aquí el código para hacer el análisis bayesiano (usa Python, pymc, y prettyplotlib):

Las más toneras de Radio Inspiración

El último reportaje de la saga #intervenganAPDAYC se está transmitiendo desde el Congreso del República (30-Oct-2013). Además el útero de marita acaba de publicar una base de datos interactiva con toda la repartición de las regalías que cobró APDAYC durante el 2012. También hay una hoja de ruta para intervenir APDAYC.

Es ya conocido que Radio Inspiración maneja muchas radios vía la Fundación Autor que está ligada a APDAYC. Esta cadena de radios pasa muchas canciones y queríamos averiguar si hay algún patrón interesante en aquellas canciones que son más difundidas y repetidas en su programación. Por ejemplo, qué canciones tienen como autores a los directivos de APDAYC?, cuáles pertenecen al catálogo de las empresas que están íntimamente relacionadas con APDAYC? (E.T. Music?, IEPMSA?)

Para eso hice una acumulación y tabulación de los datos de las canciones más toneras de Radio Inspiración (aquí están los rankings). La resolución de las imágenes era mínima y no se pudo hacer OCR. Entonces tuve que tipear las canciones una por una. Felizmente no eran muchas.

Luego era cuestión de juntar toda la información en un sólo archivo y hacer el plot usando funciones estadísticas del lenguaje de programación Python.

Canciones de Radio Inspiración del top10 que son más frecuentes.

Canciones de Radio Inspiración del top10 que son más frecuentes.

Canciones de Radio Inspiración que son más frecuentes en el top20

Canciones de Radio Inspiración que son más frecuentes en el top20

Sería interesante averiguar quiénes son los autores de esas canciones top-10. En teoría se podría ver cuáles son las canciones que pertenecen a cada autor y compositor registrado en APDAYC. Pero creo que eso es pedir demasiada transparencia.

Sección geek

Aquí el código para dibujar el gráfico:

Previa limpieza de datos:

cat all_data.csv | awk -F ',' '{print $2}' | sort | uniq -c | sort -hr | sed 's/^\s\+//g' | grep -v '1 ' | sed -r 's/^([0-9]+)\s+/\1,/g' > tmp

Aquí los datos:

Se debe eliminar Qali Warma?

Hay muchos niños que han caído enfermos por comer productos del programa Qali Warma. Entonces la situación es tan grave que se debe eliminar el programa del todo? Qué dicen los datos duros?

Para comenzar hay que recopilar los datos. Por ejemplo usando la etiqueta Qali Warma, se pueden listar todas las noticias aparecidas en El Comercio desde Mayo del 2012 donde se anunció la creación del programa:

http://elcomercio.pe/tag/370678/qali-warma

Y se puede extraer el número de niños intoxicados por fechas. Para complementar los datos se puede buscar en Google noticias adicionales de intoxicados que no hayan aparecido en El Comercio. En un editorial de El Comercio se menciona 400 niños intoxicados pero no hay ningún enlace hacia los datos. He hecho una recopilación rápida con las notas de prensa de intoxicaciones a lo largo del año y solo pude contar 321 niños intoxicados. Aquí verán la información por lugar, fecha, número de niños afectados y enlace a la nota de prensa.

El número total de niños que atiende Qali Warma es 3.5 millones según Rosa María Palacios.

Para hacer una infografía usando círculos, podemos dibujar el tamaño (área) del círculo de tal manera que esté en función del número de niños intoxicados y no intoxicados. Por ejemplo:

Número total de niños intoxicados: 321

Si el área del círculo es \pi*r^2 (pi por el radio elevado al cuadrado), osea 321, cuánto debe ser el valor del radio?

r = \sqrt{(321/\pi)} = 10.11\text{ unidades}

Número total de niños muertos: 0

r = \sqrt{(0/\pi)} = 0

Número total de niños no intoxicados: 3.5 millones menos 321

r = \sqrt{((3'500,000-321)/\pi)} = 1870.8\text{ unidades}

Ya tenemos los valores del radio y podemos dibujar las circunferencias en la misma escala:

 Intoxicados por comer Qali Warma en perspectiva

Intoxicados por comer Qali Warma en perspectiva

Debería anularse Qali Warma? Bueno, los datos en esta infografía hablan solos.

No hacer mal uso de las estadísticas para atacar Qali Warma

El programa de alimentación a niños en edad escolar ha sido atacado estas últimas semanas. Uno de los ataques principales viene de un estudio académico de un profesor de Economía de la Universidad de Pacífico. Se pueden bajar el reporte de aquí: http://srvnetappseg.up.edu.pe/siswebciup/Files/DD1307%20-%20Vasquez.pdf

Estuve mirando rápidamente el reporte en cuestión y vi que una de las críticas se basa en una mala interpretación de al menos uno de los análisis estadísticos.

En la página 93 dice:

El Gráfico 50 muestra los resultados obtenidos para el caso de los escolares. En este caso se comparó el gasto presupuestado por escolar contra el porcentaje de niños entre 6 y 11 años que viven en hogares con déficit calórico, información basada en los resultados del IPM. Este muestra resultados preocupantes, a diferencia del caso para preescolares: se observa una relación negativa entre ambas variables. Esto quiere decir que el presupuesto por escolar no está distribuido equitativamente, pues es mayor en los departamentos con menor déficit calórico.

Este es el gráfico 50:

grafico_50

Rehaciendo el análisis

Al ojo se ve que no hay relación entre las variables. Copié los datos que están en la tabla 31 (de la página 123) y ajusté una regresión lineal en el programa estadístico R.

Mira los puntos todos aglomerados al centro. No dejes que la línea de tendencia te engañe. El coeficiente de determinación R2 es casi cero (0.04) y el p-value no es significativo ( p > 0.05).

Tarán! los resultados dicen que NO hay correlación entre las variables y que las conclusiones del autor de líneas arriba están erradas. NO es cierto que los datos indiquen que se gaste menos dinero en áreas con mayor deficiencia calórica.

plot_50_reloaded

Si hubiera una correlación entre dos variables, osea una relación entre gasto y nivel de deficiencia calórica, deberíamos de tener un gráfico así. Mira los puntos distribuidos a lo largo de la línea de tendencia, no están aglomerados!:

Ejemplo de correlación significativa

Ejemplo de correlación significativa

Hay obvia correlación, a mayor valor de x, menor valor de y. Además los valores de R2 y p-value son: R2 = 0.82, p = 0.0002. El coeficiente R2 es cercano a 1, y el p-value es mucho menor que 0.05. Osea altamente significativo.

Pero los valores que salen de analizar los datos del estudio académico son los siguientes:

R2 = 0.04 (es casi cero, si fuera cercano a 1 sabes que hay correlación. Pero en este caso no tiene nada!)

p = 0.157 (es mayor que 0.05, osea datos no significativos).

Ya ves chocherita, no hay tendencia, no hay correlación, no hay causación. Señores, no tiene nada!

Pero hay más

El autor del estudio académico da como ejemplo (pag. 93) que en Puno (con alto déficit calórico) se gasta menos por niño que en Lima. Pero este es un dato anecdótico. Ya pe causa! Estudios académicos no se basan en datos anecdóticos. Además si tú criticas que la política de Qali Warma está mal, debes demostrar que en su conjunto se está gastando menos dinero donde más se necesita. Pero lamentablemente los datos y estadísticas duras refutan tus conclusiones. En este punto en particular la política será desordenada, o sin ningún patrón o tendencia, pero no es lo que afirmas pe varón.

Ya otras personas han criticado este dichoso trabajo, @rmapalacios, la ministra Mónica Rubio, y Diario16.

Actualización 22-Oct. Otro error

El señor Pepe Botella, en un comentario a este post, me avisa que él ha encontrado otro ejemplo de uso y abuso de las estadísticas en el mentado reporte académico que la prensa usa para atacar a Qali Warma.

Quiero pensar que este ha sido un error de mal uso de estadísticas, aunque el asunto se vuelve un poco rochoso.

En la página 36 empieza un floro donde el autor manifiesta que Qali Warma gasta menos dinero en los más pobres (“pobres multidimensionales”).

…la poca atención que reciben los pobres multidimensionales en términos de cobertura de servicios básicos genera una fuente de ineficacia en cuanto a la distribución del gasto público

La distribución departamental del gasto social está mal enfocada pues existen departamentos con un alto nivel de pobreza multidimensional que reciben un gasto social por debajo del promedio nacional

Osea la hipótesis es hay menor gasto en departamentos con mayor porcentaje de pobreza. Esto se debería demostrar con otra regresión lineal de ajuste significativo a la línea de tendencia. Y eso es lo que prentende hacer el autor al mostrar un gráfico muy colorido:

Regresión lineal con cuadrantes blancos y rosados. Qué hacen los cuadrantes allí?

Regresión lineal con cuadrantes blancos y rosados. Qué hacen los cuadrantes allí?

Los datos están en la Tabla 4 del informe (página 37). Bajé los datos, hice el plot y calculé el coeficiente de determinación y el valor del p-value para ver si hay o no hay correlación entre las variables gasto y nivel de pobreza.

Gráfico sin los cuadrantes que estorban.

Gráfico sin los cuadrantes que estorban.

Y creo que ya te diste cuenta que NO hay relación entre las dos variables! Mira pé:

R2 = 0.02 (si hubiera correlación este debería ser cercano a 1)
p = 0.43 (si hubiera correlación este debería ser menor que 0.05)

El mismo error!

Pero aquí viene lo penoso. Qué michi hacen esos cuadrantes en tu gráfico? Primera vez en mi vida que los veo en un análisis de regresión. Los cuadrantes se usan en análisis canónico! ca-no-nico!

Si quieres demostrar algo categóricamente debes aplicar las estadísticas relevantes y que sean las más simples. Si quieres comparar 2 variables, haces regresión lineal (o ajustas una distribución exponencial, logarítmica, etc). Si quieres explicar el comportamiento de tus datos según múltiples variables haces un análisis de correspondencia canónico o similar.

No quiero pensar que estas tratanto de estirar los datos. Los desconfiados van a pensar que quieres estirar las estadísticas, forzándolas para que falsamente den soporte al resultado que quieres obtener. Debes tener cuidado chochera.

Sobre todo, causa desconfianza cuando, de todos los puntos de tu gráfico, escoges algunos, los que te conviene usar para criticar Qali Warma. Esos son datos anecdóticos. Otro broder podría escoger solo los puntos que dan una conclusión contraria y discutir ampliamente que Qali Warma hace un excelente gasto del dinero.

Para evitar esas subjetividades se hacen regresiones lineales, cálculos de coeficientes y tests de significancia (p-value). Cosa que tu informe aparenta hacer, pero no lo hace. Presentas tablas y gráficos pero haces cherry picking para la discusión! Además, ta que no he visto ninguna mención al R2 o al p-value en tu informe.

Sección geek

Aquí está los dos análisis estadísticos, el de ejemplo y el que rehice con los datos del informe del señor de la Universidad del Pacífico.

Aquí los datos originales usados en el reporte académico, tomado de su tabla 31.

Aquí los datos originales de la tabla 4