En esta práctica vamos a explorar rápidamente la forma en la que las escalas de análisis influyen en los resultados Para esto vamos a trabajar con los datos de desaparecidos en la República Mexicana entre 2004 y 2014.
Los datos vienen en dos shapefiles, uno a nivel estatal y otro a nivel municipal. Importemos los archivos en GeoPandas para analizarlos:
In [19]:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from geopandas import GeoDataFrame
estatal = GeoDataFrame.from_file('data/des_rezago_estado.shp')
municipal = GeoDataFrame.from_file('data/muns_geo_des.shp')
Vamos a ver un poco los datos:
In [20]:
estatal.head()
Out[20]:
In [7]:
municipal.head()
Out[7]:
En las columnas 2006-2014 tenemos los datos de desaparecidos para cada año. En las demás columnos tenemos alguna información sobre las condiciones socioeconómicas de cada unidad espacial.
El ejercicio que vamos a hacer en esta ocasión es muy sencillo, vamos a hacer una regresión lineal del total de desaparecidos contra alguna variable socioeconómica y vamos a observar cómo cambia el resultado con la escala de análisis.
El primer paso es crear y calcular una columna con el total de desaparecidos:
In [21]:
des_estado = estatal[['cvegeo','2006','2007','2008','2009','2010','2011','2012','2013','2014']]
des_estado.head()
Out[21]:
Aquí simplemente seleccionamos las columnas que nos interesan
In [22]:
des_estado['total_des'] = des_estado.sum(axis=1)
des_estado.head()
Out[22]:
Y aquí añadimos una nueva columna a nuestra selección con la suma de desaparecidos.
Ahora vamos a unir la suma a nuestros datos originales:
In [23]:
import pandas as pd
estatal = pd.merge(estatal,des_estado[['total_des','cvegeo']],on='cvegeo' )
estatal.head()
Out[23]:
Repetimos para los municipios (ahora en un solo paso):
In [24]:
import pandas as pd
des_mun = municipal[['cvegeo_x','2006','2007','2008','2009','2010','2011','2012','2013','2014']]
des_mun['total_des'] = des_mun.sum(axis=1)
municipal = pd.merge(municipal,des_mun[['total_des','cvegeo_x']],on='cvegeo_x' )
municipal.head()
Out[24]:
Ahora sí, vamos a hacer una regresión a nivel estatal:
In [26]:
from pandas.stats.api import ols
model = ols(y=estatal['total_des'], x=estatal['rezago'])
model
In [27]:
In [ ]: