27 de mayo 2015

De que trata la plática?

  • Uno de nuestros insumos principales deben ser los Datos Abiertos.
  • ¿Qué son los Datos Abiertos?
  • ¿Dónde consigo Datos Abiertos?
  • ¿Qué herramientas puedo utilizar para analizarlos?
  • ¿Que tipo de preguntas se pueden responder con los Datos Abiertos?

Lo primero, descargar los datos.

Existen diversas fuentes de datos publicos abiertos. Entre ellas:

*http://catalogo.datos.gob.mx/dataset

*http://datamx.io/dataset

En particular, este historia usará datos del Subsistema de Información sobre Nacimientos SINAC.

http://catalogo.datos.gob.mx/dataset/nacimientos-ocurridos

Se necesitan unos 250MB para almacenar las 6 archivos.zip; descomprimidos ocupan 7.8 GB. Los 6 archivos cubren un periodo de 2008-2013. Todos los scripts desarrollados hasta ahora para esta historia están en https://github.com/iorch/historia_condatos_civic_hacks

Ya tengo los datos, ¿ahora qué sigue?

Se necesita un programa que nos permita manipular los datos de forma "fácil". Excel no es opción, ya que no está optimizado para manejo de archivos de millones de filas. En este caso usamos R. http://www.r-project.org

  • Es un ambiente para el desarrollo de computo estadístico y visualización de graficas matemáticas
  • Es código abierto (GPL) :D
  • Se puede descargar gratuitamente
  • Es multiplataforma (Aunque recomiendo ampliamente usar un sistema tipo Unix (GNU/Linux ó Mac OS))
  • Es "sencillo" de usar.

Ya tengo los datos, ¿ahora qué sigue?

Descomprimamos los datos (unzip). Veamos cómo se ven los datos.

df <- read.csv(file="SINAC_2008.csv",nrows=1) 
colnames(df)
##  [1] "ENTIDAD_NACMAD"      "MUNICIPIO_NACMAD"    "FECH_NACM"          
##  [4] "ESTADO_CIVIL"        "ENTIDAD_RESMAD"      "MPO_RESMAD"         
##  [7] "LOC_RESMAD"          "NUMERO_EMBARAZOS"    "NACIDOS_MUERTOS"    
## [10] "NACIDOS_VIVOS"       "SOBREVIVIENTES"      "ANTERIOR_NACIO"     
## [13] "VIVE_AUN"            "ORDEN_NAC"           "ATENCION_PRENA"     
## [16] "TRIMESTR_ATEN"       "CONSULTAS"           "SOBREVIVIO_PARTO"   
## [19] "DERECHOHABIENCIA"    "DERECHOHABIENCIA2"   "ESCOLARIDAD"        
## [22] "DESC_OCUPHAB"        "OCUPACION_HABITUAL"  "TRABAJA_ACTUALMENTE"
## [25] "FECH_NACH"           "HORA_NACH"           "SEXO_RN"            
## [28] "GESTACH"             "TALLAH"              "PESOH"              
## [31] "APGARH"              "SILVERMAN"           "NACIMIENTOS"        
## [34] "MES_NACI"            "BCG"                 "HEPATITIS_B"        
## [37] "VITAMINA_A"          "VITAMINA_K"          "TAMIZ_METABOLICO"   
## [40] "TAMIZ_AUDITIVO"      "Producto"            "CIE10"              
## [43] "CIE10_2da"           "PROCEDIMIENTO"       "OTRO_PROCEDIMIENTO" 
## [46] "LUGAR_NACIM"         "CLUES"               "UNIDAD_CLUES"       
## [49] "ATENDIO_PARTO"       "OTRO_ATENDIO_PARTO"  "CERTIFICADA_POR"    
## [52] "ENTIDAD_NACIM"       "MPO_NACIM"           "LOC_NACIM"          
## [55] "JURISD_NACIM"        "ENTIDAD_CERTIF"      "MPO_CERTIF"         
## [58] "LOCALIDAD_CERTIF"    "FECHA_CERTIF"

Decidir qué pregunta queremos responder

Viendo los Nombres de las columnas y el significado que da el archivo de descripción es que podemos plantearnos varias preguntas:

  • ¿Cuántos nacimientos hay al año por estado? (o por institución)
  • ¿Cuál ha sido la evolución anual en la tasa de mortalidad materna? (por estado, por institución).
  • ¿Cuál ha sido la evolución anual en la tasa de mortalidad en recién nacidos? (por estado, por institución).
  • Muchas más….

Vamos a tomar la pregunta 2, y empezar el procedimiento para intentar responderla.

Al tratar con archivos tan grandes surgen problemas

COrremos el riesgo de que la memoria RAM de nuestro equipo no sea suficiente para cargar todos los datos.

df <- read.csv(file="SINAC_2009.csv")

> ERROR session hadabend; LOGGED FROM: core::Error<unnamed>::rInit(const r::session::RInitInfo&) /home/ubuntu/rstudio/src/cpp/session/SessionMain.cpp:1694

Al leer linea por linea, perdemos algunas de las ventajas del método, read.csv. Por lo que tenemos que mapear nuestros datos "manualmete". El script clean_data.R, parsea cada fila y mapea cada campo correspondiente. Algunas columnas no pueden mapearse correctamente, así que momentaneamente las dejaremos fuera de nuestro estudio.

¿Y ahora qué sigue?

Necesitamos obtener sólo la información relevante para nuestro estudio.

  • Agregamos los datos por estado y por institución.
  • Separamos los registros que indican el fallecimiento de la madre
  • Calculamos la Tasa de mortalidad materna por institución, y por estado.

Los primeros dos pasos de este procedimiento están en el archivo agregate.R

Resultados

El últimos paso de la transparencia anterior, se hace en el script que también nos muestra resultados visuales, plot_instituciones.R

Resultados

Propuesta

Aún falta para convertir este estudio en una verdadera historia con datos, falta mejorar la visualización de los resultados, escribir la historia de una forma atractiva, y porque no, hacer más preguntas interesantes.

Mi propuesta es crear un grupo de trabajo, dónde tratemos de sacar alguna información útil y atractiva para la sociedad.

https://github.com/iorch/historia_condatos_civic_hacks