sábado, 14 de noviembre de 2015

Mapeo en Stata 2 de 2

En la anterior entrada mostramos como mapear los poligonos que representaban a las entidades de México de manera simple, en la presente tomaremos como ejemplo para mapear el estado de Puebla y algunas variables tomadas del Censo de Población y Vivienda 2010.

En primer lugar, y retomando lo publicado en la anterior entrada, mapeamos exclusivamente en la localidad Heróica Puebla de Zaragoza y con las divisiones por AGEB (Área Geoestadística Básica), con los siguientes comandos:

shp2dta using ageb_urb, database(agebdb) coordinates(agebcoord)
use agebdb, clear
spmap using agebcoord if cve_loc==211140001, id(_ID) fcolor(blue*0.5)



El siguiente paso será mapear el porcentaje de Población Económicamente Activa (PEA) por AGEB, de la siguiente manera:

spmap PEA using agebcoord if cve_loc==211140001, id(_ID) clnumber(20) fcolor(Blues2) ocolor(none ..) legstyle(3) legend(ring(1) position(3)) ndfcolor(red)


En donde:

clnumber(20) = Número de rangos que deseamos en la variable.
fcolor(Blues2) = Esquema de coloreo que deseamos en los polígonos, este tipo en particular admite hasta 99 categorias, y funciona perfectamente en variables continuas.
ocolor(none ..) = Indica que no queremos colorear el contorno de los polígonos.
legstyle(3) = Índica el estilo de la leyenda, este tipo es el indicado para este ejemplo.
ndfcolor(red) = El color para los polígonos donde no se tiene información.

viernes, 13 de noviembre de 2015

Mapeo en Stata 1 de 2

Stata cuenta con algunos módulos para generar mapas y algunas otras herramientas relacionadas con el análisis espacial. En esta entrada mostraré como elaborar algunos mapas sencillos de una forma muy fácil.

Lo primero que debemos hacer es instalar los siguientes módulos: spmap, shp2dta, mif2dta. El primero es el paquete para realizar los mapas, el segundo y el tercero son los paquetes necesarios para tranformar los archivos .shp y/o .mif a dormato .dta, que es el tipo de extensión que "lee" Stata. Para instalarlos sólo es necesario ejecutar los siguientes comandos:
      ssc install spmap
      ssc install shp2dta
      ssc install mif2dta

Seguido de ello necesitamos las capas de información, en este ejemplo los shapefiles y los archivos complementarios de información (.dbf, .sbn, .sbx). Para el caso de México podemos descargarlos de la página del INEGI, en caso de tenerlos debemos ejecutar el siguiente comando para transformar los datos en archivos compatibles con Stata.

shp2dta using estatal, database(mxdb) coordinates(mxcoord)

En el comando anterior, estatal es el nombre raíz de todos los archivos necesarios, es decir, en una sola carpeta debemos tener los archivos nombrados de la siguiente forma:

estatal.dbf
estatal.shp
estatal.sbn
estatal.sbx

El comando database(mxdb), será el nombre que recibirá el archivo .dta que contendrá la información procedente del archivo .dbf, usualmente con variables a "mapear". Y el comando coordinates(mxcoord), será el nombre del archivo que recibirá el archivo .dta con la información del shapefile (.shp).

Una vez transformados los datos, lo siguiente es "llamar" a la base de datos que deseamos mapear, en este caso "mxdb", para ello ingresamos el siguiente comando:

use mxdb, clear

Una vez teniendo los datos, podemos editar la base, agregar variables, etc. El primer mapa puede ser sólo de los polígonos, sin ninguna variable en ella, con el comando:

spmap using mxcoord, id(_ID) fcolor(blue*0.5)

El cual contiene entre sus instrucciones, usar el archivo de coordenadas que procede del shapefile transformado previamente (using mxcoord), tomando como identificador de polígonos la variable _ID (id(_ID)) y coloreando los polígonos en color azul con una intensidad del 50% (fcolor(blue*0.5)). El resultado es el siguiente:

Con la misma lógica es posible mapear sólo uno de los polígonos (en este caso tomaremos como ejemplo el estado de Veracruz), con el siguiente comando:

spmap using mxcoord if _ID==30, id(_ID) fcolor(orange*0.7)



Para colocar etiquetas del nombre de la entidad o de cualquier polígono que estemos mapeando, es necesario darle a Stata las coordenas de la ubicación donde deseamos la etiqueta, sin embargo, estos datos no siempre están disponibles, hasta ahora me las he arreglado con el siguiente procedimiento.

De la base mxcoord, que contiene las coordenadas de los polígonos, obtenemos promedios de coordenadas (X,Y) de cada polígono, con los siguientes comandos:

use mxcoord, clear
by _ID, sort: egen xcoord = mean(_X)
by _ID, sort: egen ycoord = mean(_Y)

Posteriormente, esos promedios debemos pasarlos a la base mxdb, tomando como referencia algún identificador,  en este caso el OID o la Clave Geoestadística.

use mxdb, clear
sort OID

En este paso copiamos los promedios de las coordenadas por ID, posteriormente elegimos la etiqueta a mapear, en nuestro ejemplo son los nombres de las entidades NOM_ENT, si estan en formato string, debemos convertirla a variable numérica con el comando

encode NOM_ENT, g(entidad)

Finalmente mapeamos con el siguiente comando:

spmap using mxcoord, id(_ID) label(xcoord(xcoord) ycoord(ycoord) label(entidad) length(15) size(vsmall) color(blue) )

Lo que nos produce:

En la siguiente entrada, mostraré como elaborar mapas en los que deseamos mapear alguna variable, ya sea continua o discreta, así como darle acabados más complejos a nuestros mapas.