Analisis espacial de datos de area

Author

Juan Sebastian Hernandez - George Steven Vega

Published

06-2023

Homicidios en Bogotá

La relación entre los homicidios y el tamaño de la población es un factor importante a considerar al analizar la seguridad ciudadana en una ciudad como Bogotá. Aunque es lógico pensar que una mayor población podría implicar una mayor incidencia de homicidios debido a la concentración de personas, la relación entre estos dos factores puede ser más compleja. El análisis de los datos de homicidios en Bogotá es esencial para comprender la magnitud y las tendencias de este problema.

En esta sentido se exploraran los datos de homicidios en Bogotá del año 2020, proporcionando una visión general de las áreas más afectadas por este delito. Estos datos, nos permitirán analizar las tendencias y patrones de homicidios en la ciudad, así como identificar posibles factores de riesgo.

A través del análisis espacial de datos de área se estabelecera un modelo de regresion espacial que describa la tasa de homicidios en Bogotá tendiendo en cuenta variables relevantes que podrían estar asociadas con la ocurrencia de homicidios en la ciudad. Además se tendrán en cuenta factores como la distribución demográfica por UPZ, los indices de escolaridad, la densidad población y la presencia de actividades delictivas

Es importante destacar que los datos presentados estadísticos y se basan en información recopilada para la fecha indicada. Es fundamental considerar el contexto completo y los otros factores subyacentes antes de realizar conclusiones definitivas o implementar medidas específicas.

library(rgdal)
library(sp)
library(sf)
library(leaflet)
library(RColorBrewer)
library(maptools)
library(leaflet.esri)
library(data.table)
library(rgeos)
library(dplyr)
library(spdep)
library(dbscan)
library(leaflet.minicharts)
library(dbscan)
library(gridGraphics)
library(spatialreg)
library(pscl)
library(vcdExtra)
library(stringr)
library(DT)
library(vcdExtra)

De acuerdo a la Camara de Comercio de Bogota (2023), Bogotá esta divida en Unidades de Planificacion Zonal (UPZ) las cuales se definen como áreas urbanas de menor área que una localidad. La funcion de las UPZ es actuar como unidades territoriales para la planificacion del desarollo urbano de la cuidad.

Debido a la gran diferencia que existe entre sectores en términos de desarrollo y capacidad economica alrededor de la cuidad, se definen normas y se desarrollan los planes de inversion de recursos que requiere la comunidad.

Bogota tiene un total de 117 Unidades de Planificacion Zonal, las cuales estan compuestas por barrios, dentro del trabajo desarrollado tomaran 116 sin tener en cuenta la UPZ89 la cual pertenece a San Isidro patios

Para la descripcion del modelo se toman en cuenta los datos de homicidios reportados de Homicidios para el año 2020.

UPZ Homicidios Zona
UPZ48 11 Timiza
UPZ96 13 Lourdes
UPZ75 12 Fontibon
UPZ51 16 Los Libertadores
UPZ66 18 San Francisco
UPZ102 48 La Sabana
UPZ39 15 Quiroga
UPZ55 21 Diana Turbay
UPZ26 6 Las Ferias
UPZ80 34 Corabastos

Analisis exploratorio

Con base en los datos de homicidios se realiza un análisis exploratorio.

Mapa de cuantiles

El mapa de cuantilez muestra las UPZ sobre las cuales se lleva acabo el estudio y la ubicación de las UPZ de mayor peligrosidad dentro de la cuidad:

De acuerdo a los datos recopilados se puede ver que algunas de las zonas mas peligrosas determinadas por el mapa de cuantiles con base en la cantidad de homicidios son:

UPZ Homicidios Zona
UPZ51 16 Los Libertadores
UPZ55 21 Diana Turbay
UPZ80 34 Corabastos
UPZ11 10 San Cristobal Norte
UPZ59 14 Alfonso Lopez
UPZ85 26 Bosa Central
UPZ108 7 Zona Industrial
UPZ71 32 Tibabuyes
UPZ9 14 Verbenal
UPZ82 41 Patio Bonito
UPZ28 22 El Rincon
UPZ84 24 Bosa Occidental
UPZ57 26 Gran Yomasa
UPZ86 23 El Porvenir
UPZ54 29 Marruecos
UPZ74 22 Engativa
datos1 <- datos

centros1 <- gCentroid(datos1,byid=T, id=datos1$CMIUUPLA)
centros1 <- data.frame(centros1)
datos <- spTransform(datos,CRS("+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"))

centros <- gCentroid(datos,byid=T, id=datos$CMIUUPLA)
centros <- data.frame(centros)
centros$CMIUUPLA <-  row.names(centros)
datos@data <- datos@data %>% left_join(centros, by="CMIUUPLA")
coordinates(centros) <- c('x','y')

Modelado de datos de área.

En la mayoría de datos donde se obtienen observaciones las cuales son ordenadas en el espacio o en el espacio tiempo, están puede ser caracterizadas por su posición, usando un sistema de coordenadas o su posición relativa, basa un una medida de distancia particular.

Situaciones como esta donde se utilizan datos sobre la población, teniendo en cuenta características socio-economicas son usados por los entes gubernamentales para ejercer planes de acción sobre una necesidad en particular.

Uno de los problemas que se presentan en estas metodologías es la existencia de una dependencia espacial entre los datos, la cual puede ser considerada como una relación entre lo que pasa entre un punto en el espacio y otro lugar en particular, lo cual puede estar dado por dos tipos de condiciones.

  1. Existencia de un fenómeno de interacción espacial

  2. Como subproducto de los errores de medición en las observaciones en una unidad espacial contigua.

Vecinos en el espacio.

La nocion de dependencia espacial implica la necesidad de determina cuales de las otras unidades en el sistema espacial tiene una influencia en particular sobre la unidad en consideración, lo cual puede ser expresado en términos de vecindad o en términos de vecinos mas cercanos.

El conjunto resultante de vecinos para cada unidad espacial puede ser representado gráficamente o mediante red y una matriz de conectividad asociada.

Matriz de contiguidad espacial.

La matriz de pesos espaciales esta definida como una matriz que mide las relaciones relaciones entre dos variables teniendo en cuenta los criterios de vecindad espacial. Se debe tener en cuenta que la matriz es deterministica y establece una magnitud que cuantifica las posibles interacciones dentro de un espacio establecido. Esta se define de la siguiente manera:

\[ W=\left(w_{i j}\right)=\left(\begin{array}{ccccc}0 & w_{12} & w_{13} & \cdots & w_{1 k} \\ w_{21} & 0 & w_{23} & \cdots & w_{2 k} \\ w_{31} & w_{32} & 0 & \cdots & w_{3 k} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ w_{k 1} & w_{k 2} & w_{k 3} & \cdots & 0\end{array}\right) \]

Los subindices \(i\) y \(j\) representan unidades espaciales, donde \(w_{ij}\) establece la relacion entre las unidades espaciales.

Existen multiples maneras de establecer los elementos individuales de la matriz W, es asi como una matrices de peso binaria asignan el valor de uno a las unidades contiguas y cero a las demas:

\[w_{ij}=\begin{cases} 1, \mbox{si } j \in N(i) \\ 0, \mbox{en el otro caso} \end{cases}\]

Sin embargo, esto determina una simetría dentro de la matriz debido al criterio geométrico establecido, para suplir esta falencia se realiza una estandarización de la matriz, donde se pondera teniendo en cuenta la suma de la filas, rompiendo la simetría mencionada anteriormente:

\[ w_{ij}^{*}=\dfrac{w_{ij}}{\sum_{j=1}^n w_{ij}}\]

Existen múltiples criterios para generar la matriz W, algunos de ellos tienen en cuenta la ubicación adyacente (Criterio: torre, alfil, reina), mientras que otros se basa en la distancia( k-vecinos mas cercanos, triangulacion de Delaunay, Esfera de influencia, Gráfica de Gabriel).

Criterios generacion Matriz W

En este caso se utilizaran los criterios antes mencionados donde se tendrán en cuenta las matrices binarias, así como las matrices estandarizadas por filas, a continuación se pueden apreciar los mapas generados para las UPZ en Bogotá.

Matriz W criterio tipo torre (rook)

Matriz criterio tipo torre binaria

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 542 
Percentage nonzero weights: 4.398994 
Average number of links: 4.882883 

Weights style: B 
Weights constants summary:
    n    nn  S0   S1    S2
B 111 12321 542 1084 11432

Matriz criterio tipo torre estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 542 
Percentage nonzero weights: 4.398994 
Average number of links: 4.882883 

Weights style: W 
Weights constants summary:
    n    nn  S0       S1       S2
W 111 12321 111 47.56239 454.1576

Matriz criterio tipo reina (queen)

Matriz criterio tipo reina binaria

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 624 
Percentage nonzero weights: 5.064524 
Average number of links: 5.621622 

Weights style: B 
Weights constants summary:
    n    nn  S0   S1    S2
B 111 12321 624 1248 15360

Matriz tipo criterio tipo estandarizada por filas

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 624 
Percentage nonzero weights: 5.064524 
Average number of links: 5.621622 

Weights style: W 
Weights constants summary:
    n    nn  S0       S1       S2
W 111 12321 111 42.36038 453.4068

Matriz K-vecinos más cercanos.

Matriz 1- Vecino más cercano binaria.

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 111 
Percentage nonzero weights: 0.9009009 
Average number of links: 1 
Non-symmetric neighbours list

Weights style: B 
Weights constants summary:
    n    nn  S0  S1  S2
B 111 12321 111 175 532

Matriz 1- Vecino mas cernano estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 111 
Percentage nonzero weights: 0.9009009 
Average number of links: 1 
Non-symmetric neighbours list

Weights style: W 
Weights constants summary:
    n    nn  S0  S1  S2
W 111 12321 111 175 532

Matriz 2- Vecinos más cercano binaria.

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 222 
Percentage nonzero weights: 1.801802 
Average number of links: 2 
Non-symmetric neighbours list

Weights style: B 
Weights constants summary:
    n    nn  S0  S1   S2
B 111 12321 222 392 1856

Matriz 2- Vecinos mas cernanos estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 222 
Percentage nonzero weights: 1.801802 
Average number of links: 2 
Non-symmetric neighbours list

Weights style: W 
Weights constants summary:
    n    nn  S0 S1  S2
W 111 12321 111 98 464

Matriz 3- Vecinos más cercanos binaria.

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 333 
Percentage nonzero weights: 2.702703 
Average number of links: 3 
Non-symmetric neighbours list

Weights style: B 
Weights constants summary:
    n    nn  S0  S1   S2
B 111 12321 333 595 4134

Matriz 3- Vecinos mas cercanos estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 333 
Percentage nonzero weights: 2.702703 
Average number of links: 3 
Non-symmetric neighbours list

Weights style: W 
Weights constants summary:
    n    nn  S0       S1       S2
W 111 12321 111 66.11111 459.3333

Mariz criterio de Triangulacion de Delaunay

Matriz criterio de Triangulacion de Delaunay binaria
Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 640 
Percentage nonzero weights: 5.194384 
Average number of links: 5.765766 

Weights style: B 
Weights constants summary:
    n    nn  S0   S1    S2
B 111 12321 640 1280 15352

Matriz Triangulacion de Delaunay estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 640 
Percentage nonzero weights: 5.194384 
Average number of links: 5.765766 

Weights style: W 
Weights constants summary:
    n    nn  S0       S1       S2
W 111 12321 111 39.24774 450.1223

Mariz W criterio de Esfera de influencia

Matriz criterio de Esfera de influencia binaria

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 546 
Percentage nonzero weights: 4.431458 
Average number of links: 4.918919 

Weights style: B 
Weights constants summary:
    n    nn  S0   S1    S2
B 111 12321 546 1092 11600

Matriz criterio de Esfera de influencia estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 546 
Percentage nonzero weights: 4.431458 
Average number of links: 4.918919 

Weights style: W 
Weights constants summary:
    n    nn  S0       S1       S2
W 111 12321 111 47.84537 452.6019

Matriz criterio de vecinos relativos

Matriz criterio de vecinos relativos binaria

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 296 
Percentage nonzero weights: 2.402402 
Average number of links: 2.666667 

Weights style: B 
Weights constants summary:
    n    nn  S0  S1   S2
B 111 12321 296 592 3432

Matriz criterio de vecinos relativos estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 296 
Percentage nonzero weights: 2.402402 
Average number of links: 2.666667 

Weights style: W 
Weights constants summary:
    n    nn  S0       S1       S2
W 111 12321 111 89.23611 460.4583

Matriz criterio de Grafica de Gabriel

Matriz criterio de Grafica de Gabriel binaria

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 478 
Percentage nonzero weights: 3.879555 
Average number of links: 4.306306 

Weights style: B 
Weights constants summary:
    n    nn  S0  S1   S2
B 111 12321 478 956 8856

Matriz criterio de Grafica de Gabriel estandarizada

Characteristics of weights list object:
Neighbour list object:
Number of regions: 111 
Number of nonzero links: 478 
Percentage nonzero weights: 3.879555 
Average number of links: 4.306306 

Weights style: W 
Weights constants summary:
    n    nn  S0       S1       S2
W 111 12321 111 54.56611 450.1411

Seleccion matriz

Indice de Moran

Con el fin de calcular la medida de autocorrelacion espacial se utiliza el indice de moran, con base en la siguiente expresion.

\[I=\frac{n}{\sum_{i=1}^{n} \sum_{j=1}^{n} W_{i j}} \frac{\sum_{i=1}^{n} \sum_{j=1}^{n} W_{i j}\left(z_{i}-\bar{z}\right)\left(z_{j}-\bar{z}\right)}{\sum_{i=1}^{n}\left(z_{i}-\bar{z}\right)^{2}}\] Aquí se seleccionara la matriz que maximice el Indice de moran

mat=list(rook_nb_b,rook_nb_w,
         queen_nb_b,queen_nb_w,
         tri_nb_b,tri_nb_w,
         soi_nb_b,soi_nb_w,
         gabriel_nb_b,gabriel_nb_w,
         relative_nb_b,relative_nb_w,
         knn1_nb_b,knn1_nb_w,
         knn2_nb_b,knn2_nb_w,
         knn3_nb_b,knn3_nb_w)
options(warn = -1)
aux=NULL
for(i in 1:length(mat))
{
  aux[i] <- moran.test(datos$CMH20CONT,mat[[i]],
                       alternative="two.sided")$"statistic"
  aux
}

Donde se plantea la prueba de hipótesis como:

\[ \begin{aligned} H_{0}: & \textrm{ No existe autocorrelación espacial} \\[1pt] H_{1}: & \textrm{ Existe autocorrelación espacial} \end{aligned} \]

moran.test(datos$CMH20CONT,mat[[which.max(aux)]],
           alternative="two.sided")

    Moran I test under randomisation

data:  datos$CMH20CONT  
weights: mat[[which.max(aux)]]    

Moran I statistic standard deviate = 4.187, p-value = 2.827e-05
alternative hypothesis: two.sided
sample estimates:
Moran I statistic       Expectation          Variance 
      0.234352367      -0.009090909       0.003380558 

El resultado de la prueba establece un valor-\(p\) menor al valor \(\alpha\) (2.82e-05 <0.05), lo cual proporciona evidencia estadísticame significativa para rechazar \(H_0\) a un nivel de significancia del 5%, por lo cual se puede asegurar que existe autocorrelacion espacial.

En este caso, observando el valor de la estadística (0.234) se puede apreciar que la correlación espacial es positiva, indicando una relación directa entre los homicidios

Con base en los resultados obtenidos no se puede asumir independencia espacial, por lo cual se deberá incluir espacial en el modelo seleccionado.

mt<-moran.mc(datos$CMH20CONT,mat[[which.max(aux)]],
           alternative="two.sided", nsim=1000)
plot(mt)

Indice de Moran Local

De igual manera se realiza el calculo del Indice de moran local (LISA), con el fin de identificar posibles clusteres espaciales.

LISA<-localmoran(datos$CMH20CONT,mat[[which.max(aux)]],zero.policy = TRUE)
mean(LISA[,1])
[1] 0.2343524

Debido a que el indice de moran global es igual al indice local se establece que no existen el mismo comportamiento en zonas especificas, lo cual se corrobora mendiante los mapas:

Prueba de exceso de ceros

Debido a que se debe realizar un modelo de regresion con conteos se realiza la prueba de exceso de ceros

zero.test(datos$CMH20CONT) 
Score test for zero inflation

    Chi-square = 22666.10015 
    df = 1
    pvalue: < 2.22e-16 

Modelo de Regresion espacial

Análisis de las variables sociales

Con el fin de presentar la autocorrelación que existe entre los sectores catastrales de la ciudad de Bogotá con respecto a las variables sociales incluidas de la encuesta multipropósito:

  • Índice de Pobreza Multidimensional (IPM)

  • Tasa de Asistencia Escolar (TAE)

  • Tasa de Desempleo (TD)

  • Satisfacción con respecto al ingreso y trabajo (SATISFACCION_ING_TRAB)

UPZ Zona Homicidios IPM TAE TD SATISF
UPZ48 Timiza 11 3.17 91.82 13.37 5.009
UPZ96 Lourdes 13 15.28 93.59 22.11 4.482
UPZ75 Fontibon 12 4.31 93.87 12.11 5.82
UPZ51 Los Libertadores 16 6.736 95.06 18.9 5.45
UPZ66 San Francisco 18 9.378 92.14 17.88 5.525
UPZ102 La Sabana 48 10.45 78.72 11.62 5.406
UPZ39 Quiroga 15 5.995 94.49 17.28 5.576
UPZ55 Diana Turbay 21 12.8 92.82 19.48 4.414
UPZ26 Las Ferias 6 3.673 92.63 15.27 5.81
UPZ80 Corabastos 34 12.71 88.29 16.51 5.333
UPZ11 San Cristobal Norte 10 6.25 93.59 15.73 5.86
UPZ59 Alfonso Lopez 14 0.7348 96.99 5.452 6.819
UPZ25 La Floresta 2 0.4381 97.85 4.654 7.863
UPZ85 Bosa Central 26 7.668 93.03 19.41 5.682
UPZ50 La Gloria 12 6.308 95.65 17.84 4.75

Vamos a usar la misma matriz de proximidad que se usa para los homicidios pues es importante resaltar que como se puede ver en el anterior mapa, el comportamiento de las variables es bastante similar.

formula = 100000*CMH20CONT/Total ~ Thombre_UP + Tmujer_UPZ + IPM + TAE + TD + SATISFACCION_ING_TRAB

Anotación

Estos modelos que se ajustan a continuación tiene la característica de que la variable dependiente no puede ser asumida como una variable que proviene de una distribución normal por tanto los modelos usados tienen se usan para mostrar como se ajustan cada una de las opciones de modelos con dependencia espacial. Los resultados de estos modelos no son concluyentes y simplemente se presentan como ejercicio académico aunque vale la pena resaltar que estos se pueden tomarse basados en una distribución normal truncada.

Modelo de regresion 1

Se plantea inicialmente un modelo del tipo

\[Z =X\beta + \varepsilon\], en este modelo se asume normalidad multivariada, sin embargo este modelo es ilustrativo ya que anteriormente se estableció que existe correlación espacial.

reg0 <- lm(formula,data=datos)

Summary

  Estimate Std. Error t value Pr(>|t|)
(Intercept) 149.2 96.32 1.549 0.1244
Thombre_UP 18.33 7.296 2.512 0.01353
Tmujer_UPZ -13.26 8.24 -1.609 0.1107
IPM 3.124 0.8526 3.664 0.0003928
TAE -1.929 0.9447 -2.042 0.0437
TD -0.639 1.078 -0.593 0.5544
SATISFACCION_ING_TRAB 5.995 5.751 1.042 0.2996

Se realiza la verificación de supesuesto de residuales mendiante la prueba de autocorrelacion espacial

Decisión PValor
Hay autocorrelación espacial en los residiales 0.006164

El resultado de la prueba establece que no se cumple el supuesto de independencia, por lo cual rechaza la hipotesis nula y por ende se estalece que aun presenta autocorrelacion espacial en los residuales, por lo cual se deberá optar otro modelo de regresión espacial.

Modelo de regresion 2

Se plantea un modelo espacial del tipo :

\[Z=\rho WZ+\varepsilon_1\]

reg1 <- lagsarlm (formula,data= datos, listw = mat[[which.max(aux)]]) 

Summary

  Estimate Std. Error z value Pr(>|z|)
(Intercept) 140.1 91.37 1.533 0.1252
Thombre_UP 17.9 6.919 2.587 0.009695
Tmujer_UPZ -13.62 7.797 -1.747 0.08064
IPM 3.105 0.8076 3.845 0.0001207
TAE -1.84 0.895 -2.056 0.03978
TD -0.698 1.021 -0.6838 0.4941
SATISFACCION_ING_TRAB 5.65 5.442 1.038 0.2992
Decisión PValor
No hay autocorrelación espacial en los residiales 0.2225

Modelo de regresion 3

Se plantea un modelo espacial del tipo :

\[Z=\rho WZ+X\beta_1+\varepsilon_1\]

reg2 <- lmSLX (formula,data= datos, listw = mat[[which.max(aux)]]) 
Summary
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 155.9 265.3 0.5876 0.5581
Thombre_UP 17.71 7.794 2.272 0.02527
Tmujer_UPZ -11.78 8.79 -1.341 0.1832
IPM 3.629 0.9393 3.863 0.0002011
TAE -1.996 1.019 -1.959 0.05294
TD -1.42 1.279 -1.11 0.2696
SATISFACCION_ING_TRAB 5.184 6.447 0.804 0.4233
lag.Thombre_UP -14.06 19.31 -0.7285 0.468
lag.Tmujer_UPZ 11.51 21.81 0.5279 0.5988
lag.IPM 1.223 1.864 0.6557 0.5135
lag.TAE 0.5278 2.134 0.2473 0.8052
lag.TD -0.4872 2.83 -0.1722 0.8636
lag.SATISFACCION_ING_TRAB -5.922 16.04 -0.3692 0.7128
Decisión PValor
Hay autocorrelación espacial en los residiales 0.008837

Modelo de regresion 4

\[Z=\rho W_1Z+X\beta_1+ W_2R\beta_2+u\]

reg3 <- sacsarlm(formula,data= datos, 
                 listw = mat[[which.max(aux)]], 
                 listw2 = mat[[which.max(aux)]], 
                 Durbin=T) 

Summary

  Estimate Std. Error z value Pr(>|z|)
(Intercept) 157.5 340.5 0.4626 0.6437
Thombre_UP 18.67 7.487 2.493 0.01266
Tmujer_UPZ -13.08 8.302 -1.575 0.1151
IPM 3.567 0.8886 4.014 5.96e-05
TAE -2.054 0.9593 -2.141 0.03226
TD -1.323 1.27 -1.042 0.2976
SATISFACCION_ING_TRAB 5.813 6.103 0.9524 0.3409
lag.Thombre_UP -9.035 27.5 -0.3285 0.7425
lag.Tmujer_UPZ 5.336 25.66 0.2079 0.8353
lag.IPM 0.3319 5.035 0.06592 0.9474
lag.TAE 0.2253 3.281 0.06868 0.9452
lag.TD 0.5478 2.941 0.1863 0.8522
lag.SATISFACCION_ING_TRAB -3.051 17.06 -0.1788 0.8581
Decisión PValor
No hay autocorrelación espacial en los residiales 0.3844

Modelo de regresion 5

Para el modelo de regresion 3 se plantea el modelo espacial de Durbin o modelo mixto regresivo-regresivo

\[Z=\rho W_1Z+X\beta_1+ +(I+\lambda W_2)^{-1}u\]

reg4 <- sacsarlm(formula,data= datos, 
                 listw = mat[[which.max(aux)]], 
                 listw2 = mat[[which.max(aux)]],
                 type = "mixed") 

Summary

  Estimate Std. Error z value Pr(>|z|)
(Intercept) 157.5 340.5 0.4626 0.6437
Thombre_UP 18.67 7.487 2.493 0.01266
Tmujer_UPZ -13.08 8.302 -1.575 0.1151
IPM 3.567 0.8886 4.014 5.96e-05
TAE -2.054 0.9593 -2.141 0.03226
TD -1.323 1.27 -1.042 0.2976
SATISFACCION_ING_TRAB 5.813 6.103 0.9524 0.3409
lag.Thombre_UP -9.035 27.5 -0.3285 0.7425
lag.Tmujer_UPZ 5.336 25.66 0.2079 0.8353
lag.IPM 0.3319 5.035 0.06592 0.9474
lag.TAE 0.2253 3.281 0.06868 0.9452
lag.TD 0.5478 2.941 0.1863 0.8522
lag.SATISFACCION_ING_TRAB -3.051 17.06 -0.1788 0.8581
Decisión PValor
No hay autocorrelación espacial en los residiales 0.3844

Modelo de regresion 6

En este caso se plantea un model de error espacial auto-regresivo:

\[Z=X\beta_1+(I+\lambda W_2)^{-1}u\]

reg5 <- errorsarlm(formula,data= datos, listw = mat[[which.max(aux)]]) 
  Estimate Std. Error z value Pr(>|z|)
(Intercept) 153 89.39 1.712 0.08688
Thombre_UP 19.22 6.814 2.821 0.004793
Tmujer_UPZ -13.82 7.637 -1.809 0.07041
IPM 3.15 0.7999 3.937 8.24e-05
TAE -1.902 0.8848 -2.15 0.03159
TD -0.9297 0.9875 -0.9414 0.3465
SATISFACCION_ING_TRAB 5.417 5.31 1.02 0.3076
Decisión PValor
No hay autocorrelación espacial en los residiales 0.3613

Seleccion de mejores modelos

Los mejores modelos son reg5, reg4 y reg3 pues tienen en común que la mayoría de las variables son significativas. Como siguiente vamos a sacar las variables que no son significativas para cada modelo y veremos cual termina siendo el modelo que mejor explique la tasa de homicidios.

Modelo de Regresion 4

formula <- 100000*CMH20CONT/Total ~ Thombre_UP + IPM + TAE + TD + 0
reg3 <- sacsarlm(formula,data= datos, 
                 listw = mat[[which.max(aux)]], 
                 listw2 = mat[[which.max(aux)]], 
                 Durbin=T) 
Summary
  Estimate Std. Error z value Pr(>|z|)
Thombre_UP 8.229 2.76 2.981 0.002872
IPM 3.586 0.9336 3.841 0.0001224
TAE -1.69 0.934 -1.809 0.0704
TD -2.097 0.7653 -2.741 0.006134
lag.Thombre_UP -3.847 9.324 -0.4126 0.6799
lag.IPM 1.218 5.081 0.2398 0.8105
lag.TAE 1.74 0.9006 1.932 0.05339
lag.TD 0.6396 2.183 0.293 0.7695
Decisión PValor
No hay autocorrelación espacial en los residiales 0.3996

Modelo de Regresion 5

formula <- 100000*CMH20CONT/Total ~ Thombre_UP + IPM + TAE + TD + 0
reg4 <- sacsarlm(formula,data= datos, 
                 listw = mat[[which.max(aux)]], 
                 listw2 = mat[[which.max(aux)]], 
                 type = "mixed") 
Summary
  Estimate Std. Error z value Pr(>|z|)
Thombre_UP 8.229 2.76 2.981 0.002872
IPM 3.586 0.9336 3.841 0.0001224
TAE -1.69 0.934 -1.809 0.0704
TD -2.097 0.7653 -2.741 0.006134
lag.Thombre_UP -3.847 9.324 -0.4126 0.6799
lag.IPM 1.218 5.081 0.2398 0.8105
lag.TAE 1.74 0.9006 1.932 0.05339
lag.TD 0.6396 2.183 0.293 0.7695
Decisión PValor
No hay autocorrelación espacial en los residiales 0.3996

Modelo de Regresion 6

formula <- 100000*CMH20CONT/Total ~ Thombre_UP + IPM + TAE + TD
reg5 <- errorsarlm(formula,data= datos, listw = mat[[which.max(aux)]]) 
Sumary
  Estimate Std. Error z value Pr(>|z|)
(Intercept) 187.8 86.02 2.184 0.02898
Thombre_UP 7.576 2.743 2.762 0.005741
IPM 3.089 0.8051 3.836 0.0001248
TAE -1.822 0.8926 -2.041 0.04121
TD -1.684 0.731 -2.303 0.02126
Decisión PValor
No hay autocorrelación espacial en los residuales 0.3556

Mapa estimado

Se presenta el mapa estimado para la tasa de homicidios para cada uno de los modelos ajustado anteriormente:

Modelo poisson

En esta sección presentaremos el correcto modelamiento de la variable Número de homicidios en el 2020. Originalmente esta variable es un conteo y como tal se va a modelar usando un modelo lineal generalizado Poisson.

Incialmete se revisará la inflación por ceros del los datos y posteriomente se pasará a ajustar el modelo:

zero.test(datos$CMH20CONT) 
Score test for zero inflation

    Chi-square = 22666.10015 
    df = 1
    pvalue: < 2.22e-16 
reg_poisson <- hurdle(CMH20CONT ~ Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + offset(log(Total))|Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + offset(log(Total)),data = datos,dist = "poisson", zero.dist = "binomial")
residuales=residuals(reg_poisson,"response")
summary(reg_poisson)

Call:
hurdle(formula = CMH20CONT ~ Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + 
    offset(log(Total)) | Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + 
    offset(log(Total)), data = datos, dist = "poisson", zero.dist = "binomial")

Pearson residuals:
    Min      1Q  Median      3Q     Max 
-4.2313 -0.9572 -0.1036  0.8132  6.7778 

Count model coefficients (truncated poisson with log link):
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -0.718192   1.061968  -0.676   0.4989    
Thombre_UP             0.374400   0.043066   8.694   <2e-16 ***
IPM                    0.105098   0.011235   9.355   <2e-16 ***
TAE                   -0.110267   0.009768 -11.288   <2e-16 ***
TD                     0.013745   0.012843   1.070   0.2845    
SATISFACCION_ING_TRAB  0.158225   0.082669   1.914   0.0556 .  
Zero hurdle model coefficients (binomial with logit link):
                      Estimate Std. Error z value Pr(>|z|)
(Intercept)            -0.2325    20.9602  -0.011    0.991
Thombre_UP              0.5794     0.5691   1.018    0.309
IPM                     0.1457     0.1728   0.843    0.399
TAE                    -0.1605     0.2188  -0.733    0.463
TD                      0.0972     0.1702   0.571    0.568
SATISFACCION_ING_TRAB   0.7969     0.8823   0.903    0.366
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Number of iterations in BFGS optimization: 10 
Log-likelihood: -355.7 on 12 Df
pR2(reg_poisson)
fitting null model for pseudo-r2
         llh      llhNull           G2     McFadden         r2ML         r2CU 
-355.6522032 -717.7201873  724.1359683    0.5044696    0.9985318    0.9985343 
moran.test(residuales, mat[[which.max(aux)]], alternative="two.sided")

    Moran I test under randomisation

data:  residuales  
weights: mat[[which.max(aux)]]    

Moran I statistic standard deviate = 2.2934, p-value = 0.02183
alternative hypothesis: two.sided
sample estimates:
Moran I statistic       Expectation          Variance 
      0.125740966      -0.009090909       0.003456516 

En el anterior modelo se puede observar un problema de dependencia espacial en los residuales. Es por esto que extreamos los vectores propios de Moran y se usan posteriormente en el modelo. Además, se puede observar que hay un variable SATISFACCION_ING_TRAB que muestra no ser significativa para el modelo. Esta variable se extrae del modelo y este se vuelve a estimar:

MEpoisLMR <- spatialreg::ME(CMH20CONT ~ Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + offset(log(Total)),data=datos,family="poisson",listw=mat[[which.max(aux)]], alpha=0.03, verbose=TRUE)
eV[,7], I: 0.009336068 ZI: NA, pr(ZI): 0.37
MoranEigenVLMR=data.frame(fitted(MEpoisLMR))
summary(MoranEigenVLMR)
      vec7          
 Min.   :-0.193042  
 1st Qu.:-0.073083  
 Median :-0.005231  
 Mean   : 0.000000  
 3rd Qu.: 0.075676  
 Max.   : 0.182615  
reg_poisson <- hurdle(CMH20CONT ~ Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + fitted(MEpoisLMR) + offset(log(Total))|Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + offset(log(Total)),data = datos,dist = "poisson", zero.dist = "binomial")
residuales=residuals(reg_poisson,"response")
summary(reg_poisson)

Call:
hurdle(formula = CMH20CONT ~ Thombre_UP + IPM + TAE + TD + SATISFACCION_ING_TRAB + 
    fitted(MEpoisLMR) + offset(log(Total)) | Thombre_UP + IPM + TAE + 
    TD + SATISFACCION_ING_TRAB + offset(log(Total)), data = datos, dist = "poisson", 
    zero.dist = "binomial")

Pearson residuals:
     Min       1Q   Median       3Q      Max 
-4.36040 -0.80675 -0.09323  0.61562  7.16291 

Count model coefficients (truncated poisson with log link):
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)            0.271440   1.098196   0.247   0.8048    
Thombre_UP             0.430037   0.043518   9.882  < 2e-16 ***
IPM                    0.089001   0.011466   7.762 8.36e-15 ***
TAE                   -0.115550   0.009911 -11.659  < 2e-16 ***
TD                     0.021527   0.012968   1.660   0.0969 .  
SATISFACCION_ING_TRAB  0.068524   0.086452   0.793   0.4280    
fitted(MEpoisLMR)     -2.054413   0.370819  -5.540 3.02e-08 ***
Zero hurdle model coefficients (binomial with logit link):
                      Estimate Std. Error z value Pr(>|z|)
(Intercept)            -0.2325    20.9602  -0.011    0.991
Thombre_UP              0.5794     0.5691   1.018    0.309
IPM                     0.1457     0.1728   0.843    0.399
TAE                    -0.1605     0.2188  -0.733    0.463
TD                      0.0972     0.1702   0.571    0.568
SATISFACCION_ING_TRAB   0.7969     0.8823   0.903    0.366
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Number of iterations in BFGS optimization: 11 
Log-likelihood: -340.1 on 13 Df
pR2(reg_poisson)
fitting null model for pseudo-r2
         llh      llhNull           G2     McFadden         r2ML         r2CU 
-340.0833152 -717.7201873  755.2737442    0.5261617    0.9988910    0.9988934 
moran.test(residuales, mat[[which.max(aux)]], alternative="two.sided")

    Moran I test under randomisation

data:  residuales  
weights: mat[[which.max(aux)]]    

Moran I statistic standard deviate = 0.51252, p-value = 0.6083
alternative hypothesis: two.sided
sample estimates:
Moran I statistic       Expectation          Variance 
      0.021300404      -0.009090909       0.003516274 
reg_poisson <- hurdle(CMH20CONT ~ Thombre_UP + IPM + TAE + TD + fitted(MEpoisLMR) + offset(log(Total))|Thombre_UP + IPM + TAE + TD + offset(log(Total)),data = datos,dist = "poisson", zero.dist = "binomial")
residuales=residuals(reg_poisson,"response")
summary(reg_poisson)

Call:
hurdle(formula = CMH20CONT ~ Thombre_UP + IPM + TAE + TD + fitted(MEpoisLMR) + 
    offset(log(Total)) | Thombre_UP + IPM + TAE + TD + offset(log(Total)), 
    data = datos, dist = "poisson", zero.dist = "binomial")

Pearson residuals:
    Min      1Q  Median      3Q     Max 
-4.2752 -0.8817 -0.1074  0.5883  7.3338 

Count model coefficients (truncated poisson with log link):
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)        0.752840   0.917720   0.820    0.412    
Thombre_UP         0.430671   0.043671   9.862  < 2e-16 ***
IPM                0.085594   0.010660   8.029 9.80e-16 ***
TAE               -0.115554   0.009928 -11.639  < 2e-16 ***
TD                 0.016269   0.011150   1.459    0.145    
fitted(MEpoisLMR) -2.113311   0.363814  -5.809 6.29e-09 ***
Zero hurdle model coefficients (binomial with logit link):
            Estimate Std. Error z value Pr(>|z|)
(Intercept)  2.67457   19.38714   0.138    0.890
Thombre_UP   0.47586    0.53777   0.885    0.376
IPM          0.13396    0.16110   0.832    0.406
TAE         -0.12466    0.19977  -0.624    0.533
TD          -0.01741    0.11030  -0.158    0.875
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Number of iterations in BFGS optimization: 10 
Log-likelihood: -340.8 on 11 Df
pR2(reg_poisson)
fitting null model for pseudo-r2
         llh      llhNull           G2     McFadden         r2ML         r2CU 
-340.8087966 -717.7201873  753.8227815    0.5251509    0.9988764    0.9988788 
moran.test(residuales, mat[[which.max(aux)]], alternative="two.sided")

    Moran I test under randomisation

data:  residuales  
weights: mat[[which.max(aux)]]    

Moran I statistic standard deviate = 0.60824, p-value = 0.543
alternative hypothesis: two.sided
sample estimates:
Moran I statistic       Expectation          Variance 
      0.027006613      -0.009090909       0.003522116 

References

Camara de Comercio de Bogota. 2023. UNIDADES DE PLANIFICACIÓN ZONAL UPZs.” Camara de Comercio de Bogota.