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.