Índice normalizado

Otra forma de apreciar el índice de marginación es normalizando sus valores para ver objetivamente la evolución de cada unidad territorial (Somarriba et al. 2013). La normalización se realiza utilizando un cambio de escala conocido como normalización mínima-máxima. Con este procedimiento el índice de marginación se escala a valores relativos con un rango de entre cero y uno, lo cual permite su comparación numérica y le da una propiedad adicional al índice de marginación. Al mismo tiempo, la normalización determina el mismo sentido que el índice obtenido por el método DP2, donde los valores cercanos a cero implican mayor marginación.

El proceso de normalización consiste en:

\[{DP}_2normalizado=\frac{{DP}_2^i-\min({DP}_2)}{\max({DP}_2)-\min({DP}_2)},\] donde:

\(\circ \: {DP}_{2}^{i}\): es el valor del índice de marginación de la localidad \(i\),
\(\circ \: min ({DP}_{2})\): es el valor mínimo o peor escenario que puede tomar el índice, y
\(\circ \: max ({DP}_{2})\): es el valor máximo u objetivo que puede tomar el índice.

Desviación estándar de los indicadores simples

Varianza muestral insesgada
Estimado insesgado de la varianza poblacional

\[s^{2} = \frac{1}{n-1}\left(x_{i}-\bar{x}\right)^{2} = \frac{\sum_{i=1}^{n}(x_{i}^{2})}{n-1} - \frac{\sum_{i=1}^{n}(x_{i})^{2}}{(n-1)\: n } = \left(\frac{n-1}{n}\right)s_{n}^{2} \] Se calcula la desviación estándar muestral y su inversa para un conjunto de indicadores simples. Para cada elemento:
- Extrae las columnas 10 a 17 del data frame correspondiente (DP2_).
- Calcula la desviación estándar para cada una de estas columnas.
- Ajusta la desviación estándar para obtener la desviación estándar muestral.
- Calcula la inversa de la desviación estándar muestral.
- Almacena los resultados en un data frame dentro de la lista desvest.

# Desviación estándar de los indicadores
desvest <- NULL
for(i in 1:2){
desvest[[i]] <- as.matrix(apply(get(paste0("DP2_", tablas[i]))[10:17], MARGIN = 2, sd)) %>%
                 as.data.frame() %>%
                  rename("desvest" = "V1") %>%
                   dplyr::mutate(sd_muestral = .$desvest * (sqrt((dim(get(paste0("DP2_", tablas[i]))[10:17])[1] - 1)/dim(get(paste0("DP2_", tablas[i]))[10:17])[1]))) %>%
                    dplyr::mutate(desvest.inversa = 1/(.$sd_muestral))
}
Desviación estándar
Desviación estándar Desviación estándar muestral Desviación estandar m. inversa
ANALF 13.711 13.711 0.073
SBASC 20.237 20.237 0.049
OVSDE 20.678 20.678 0.048
OVSEE 21.384 21.384 0.047
OVSAE 31.613 31.613 0.032
OVPT 23.687 23.687 0.042
OVHAC 23.691 23.691 0.042
OVSREF 32.769 32.769 0.031

Escenarios extremos

Para este tipo de cálculo es necesario conocer los puntos más extremos que puede tomar el índice en el año de observación. De antemano, se sabe que cada indicador simple toma valores de cero a 100 y, además, el método DP2 ya proporcionó el orden de entrada de las variables. Usando estos criterios se estiman los puntos focales extremos que puede tomar el índice de marginación. Se sabe que la peor situación es cuando una unidad de análisis toca todos y cada uno de los valores mínimos del vector base de referencia común, esto sería el peor escenario de marginación y tomaría un valor de cero. En sentido contrario, el valor máximo sería la situación con la menor marginación.

Escenarios del mínimo y máximo valor en el índice DP2

Se calculan los valores mínimo y máximo del índice DP2 para diferentes escenarios y años. Para cada elemento, se calcula:
- Valor mínimo: Calcula la diferencia absoluta entre minRV_2010 y vector_minimo, ajusta con la inversa de la desviación estándar muestral y los factores de corrección, y suma las filas para obtener el DP2.
- Valor máximo: Calcula la diferencia absoluta entre minRV_2010 y un vector de ceros (vector_maximo), ajusta con la inversa de la desviación estándar muestral y los factores de corrección, y suma las filas para obtener el DP2.

minimo <- NULL
maximo <- NULL
## Mínimo valor del DP2
for(i in 1:2){
vector_minimo <- minRV_2010  
tabla <- abs(vector_minimo - minRV_2010) * desvest[[i]][["desvest.inversa"]] *
          get(paste0("ind_", tablas[i]))[["correction_factors"]][names(DP2_2020[10:17])] %>%
           t() %>%
            as.data.frame() 
minimo[[i]] <- data.frame(AÑO = paste(tablas[i]), Escenario = "Mínimo", tabla, DP2 = rowSums(tabla))
  
## Máximo valor del DP2   
vector_maximo <- rep(0, 8) # Cuando los indicadores valen cero 
tabla <- abs(vector_maximo - minRV_2010) * desvest[[i]][["desvest.inversa"]] *
          get(paste0("ind_", tablas[i]))[["correction_factors"]][names(DP2_2020[10:17])] %>%
           t() %>%
            as.data.frame() 

maximo [[i]] <- data.frame(AÑO = paste(tablas[i]), Escenario = "Máximo", tabla, DP2 = rowSums(tabla))
}

Índice normalizado

Se guarda la base de datos con el índice normalizado

Se calcula un nuevo indicador denominado `IMN para cada año, normalizando el índice DP2 entre sus valores mínimos y máximos.

for(i in 1:2){
min_DP2 <- minimo[[i]][["DP2"]]
max_DP2 <- maximo[[i]][["DP2"]]
assign(paste0("DP2_", tablas[i]), get(paste0("DP2_", tablas[i])) %>%
                                   dplyr::mutate(IMN = (get(paste0("IM_", tablas[i])) - min_DP2)/(max_DP2 -  min_DP2)))
}
Índice de marginación a nivel localidad, 2020
CVE_LOC ENT NOM_ENT MUN NOM_MUN LOC NOM_LOC POB_TOT AÑO ANALF SBASC OVSDE OVSEE OVSAE OVPT OVHAC OVSREF IM_2020 GM_2020 IMN_2020
010010001 01 Aguascalientes 001 Aguascalientes 0001 Aguascalientes 863 893 2020 1.4 19.2 0.0 0.1 0.1 0.5 14.5 3.5 24.962 Muy bajo 0.953
010010096 01 Aguascalientes 001 Aguascalientes 0096 Agua Azul 41 2020 6.5 51.6 7.3 0.0 29.3 0.0 14.6 4.9 22.655 Bajo 0.865
010010106 01 Aguascalientes 001 Aguascalientes 0106 Arellano 1 169 2020 7.1 39.1 0.9 0.0 0.6 0.8 26.0 7.9 23.538 Muy bajo 0.899
010010112 01 Aguascalientes 001 Aguascalientes 0112 Bajío los Vázquez 41 2020 10.3 65.5 0.0 0.0 0.0 0.0 12.2 0.0 23.292 Muy bajo 0.890
010010120 01 Aguascalientes 001 Aguascalientes 0120 Buenavista de Peñuelas 1 054 2020 6.4 35.7 0.5 0.1 0.4 0.4 26.4 5.0 23.776 Muy bajo 0.908
010010121 01 Aguascalientes 001 Aguascalientes 0121 Cabecita 3 Marías (Rancho Nuevo) 192 2020 6.5 41.3 0.0 0.0 0.0 2.6 24.5 0.0 23.780 Muy bajo 0.908
010010125 01 Aguascalientes 001 Aguascalientes 0125 Cañada Grande de Cotorina 493 2020 4.0 25.6 2.2 0.8 0.0 1.0 36.7 6.3 23.770 Muy bajo 0.908
010010126 01 Aguascalientes 001 Aguascalientes 0126 Cañada Honda [Estación] 536 2020 3.5 28.2 0.7 0.9 0.7 1.3 16.6 8.8 24.268 Muy bajo 0.927
010010127 01 Aguascalientes 001 Aguascalientes 0127 Los Caños 1 225 2020 3.8 47.8 1.4 0.3 1.2 0.6 18.9 4.1 23.731 Muy bajo 0.906
010010128 01 Aguascalientes 001 Aguascalientes 0128 El Cariñán 256 2020 5.9 35.1 0.0 0.0 0.0 0.0 28.1 2.3 23.888 Muy bajo 0.912
010010135 01 Aguascalientes 001 Aguascalientes 0135 El Cedazo (Cedazo de San Antonio) 322 2020 7.7 29.4 3.4 4.0 8.4 0.0 29.2 14.3 23.110 Muy bajo 0.883
010010138 01 Aguascalientes 001 Aguascalientes 0138 Centro de Arriba (El Taray) 1 172 2020 3.4 58.3 0.4 0.0 0.2 1.6 28.3 3.8 23.204 Muy bajo 0.886
010010139 01 Aguascalientes 001 Aguascalientes 0139 Cieneguilla (La Lumbrera) 997 2020 8.8 57.6 0.1 0.6 1.1 2.6 22.3 7.9 22.942 Bajo 0.876
010010141 01 Aguascalientes 001 Aguascalientes 0141 Cobos 11 2020 0.0 37.5 0.0 0.0 0.0 45.5 0.0 0.0 23.776 Muy bajo 0.908
010010144 01 Aguascalientes 001 Aguascalientes 0144 El Colorado (El Soyatal) 468 2020 2.4 39.1 1.3 0.4 3.8 0.4 26.5 1.7 23.846 Muy bajo 0.911
010010146 01 Aguascalientes 001 Aguascalientes 0146 El Conejal 1 081 2020 2.6 44.3 0.3 0.0 0.8 0.0 26.9 2.5 23.790 Muy bajo 0.909
010010157 01 Aguascalientes 001 Aguascalientes 0157 Cotorina de Abajo 55 2020 5.7 45.7 0.0 0.0 5.5 3.6 0.0 3.6 24.141 Muy bajo 0.922
010010162 01 Aguascalientes 001 Aguascalientes 0162 Coyotes 318 2020 5.6 29.0 0.0 0.0 2.2 1.3 31.8 11.3 23.614 Muy bajo 0.902
010010170 01 Aguascalientes 001 Aguascalientes 0170 Cuauhtémoc (Las Palomas) 468 2020 2.6 41.3 1.8 0.0 4.2 2.9 24.1 9.4 23.525 Muy bajo 0.899
010010171 01 Aguascalientes 001 Aguascalientes 0171 Los Cuervos (Los Ojos de Agua) 419 2020 10.0 45.7 0.2 0.5 0.2 1.2 29.1 1.2 23.302 Muy bajo 0.890
010010183 01 Aguascalientes 001 Aguascalientes 0183 Los Dolores 11 2020 0.0 42.9 0.0 63.6 63.6 0.0 27.3 63.6 18.477 Alto 0.706
010010190 01 Aguascalientes 001 Aguascalientes 0190 El Duraznillo 354 2020 10.8 49.6 0.8 0.0 0.0 0.8 34.7 5.9 22.838 Bajo 0.872
010010191 01 Aguascalientes 001 Aguascalientes 0191 Los Durón 144 2020 13.7 52.6 0.7 0.0 0.0 0.0 33.3 0.0 22.848 Bajo 0.873
010010209 01 Aguascalientes 001 Aguascalientes 0209 La Fortuna 37 2020 13.6 68.2 0.0 0.0 0.0 10.8 45.9 10.8 21.390 Bajo 0.817
010010212 01 Aguascalientes 001 Aguascalientes 0212 Lomas del Gachupín 27 2020 4.3 8.7 0.0 0.0 0.0 0.0 0.0 14.8 25.241 Muy bajo 0.964

<>

#Tabla final
for(i in tablas){
save(get(paste0("DP2_", i)), file = paste0(here::here(), "/Output/IML_", i, ".RData"))
}