Í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 del estado o municipio \(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 7 a 15 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 estandar de los indicadores
desvest <- NULL
for(i in 1:3){
desvest[[i]] <- as.matrix(apply(get(paste0("DP2_", tablas[i]))[7:15], MARGIN = 2, sd)) %>%
                 as.data.frame() %>%
                  rename("desvest" = "V1") %>%
                   dplyr::mutate(sd_muestral = .$desvest * (sqrt((dim(get(paste0("DP2_", tablas[i]))[7:15])[1] - 1)/dim(get(paste0("DP2_", tablas[i]))[7:15])[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 7.634 7.632 0.131
SBASC 13.982 13.979 0.072
OVSDE 5.289 5.288 0.189
OVSEE 2.769 2.769 0.361
OVSAE 9.246 9.244 0.108
OVPT 8.974 8.972 0.111
VHAC 10.587 10.584 0.094
PL.5000 35.268 35.261 0.028
PO2SM 11.830 11.828 0.085

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:3){
vector_minimo <- minRV_2010  
tabla <- abs(vector_minimo - minRV_2010) * desvest[[i]][["desvest.inversa"]] *
          get(paste0("ind_", tablas[i]))[["correction_factors"]][names(DP2_2020[7:15])] %>%
           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, 9) # 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[7:15])] %>%
           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:3){
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 municipal, 2020
CVE_ENT NOM_ENT CVE_MUN NOM_MUN POB_TOT AÑO ANALF SBASC OVSDE OVSEE OVSAE OVPT VHAC PL.5000 PO2SM IM_2020 GM_2020 IMN_2020
01 Aguascalientes 01001 Aguascalientes 948 990 2020 1.6 20.4 0.1 0.1 0.4 0.6 10.3 7.5 54.2 60.319 Muy bajo 0.945
01 Aguascalientes 01002 Asientos 51 536 2020 3.5 33.9 2.7 0.5 0.9 1.4 22.9 78.2 78.6 56.546 Muy bajo 0.885
01 Aguascalientes 01003 Calvillo 58 250 2020 4.5 42.5 0.4 0.5 0.8 1.0 19.2 51.3 79.3 57.058 Muy bajo 0.893
01 Aguascalientes 01004 Cosío 17 000 2020 3.1 27.7 0.7 0.6 0.7 1.0 22.7 65.5 81.7 57.114 Muy bajo 0.894
01 Aguascalientes 01005 Jesús María 129 929 2020 2.4 26.7 0.3 0.4 0.9 1.3 16.4 37.2 56.7 59.012 Muy bajo 0.924
01 Aguascalientes 01006 Pabellón de Arteaga 47 646 2020 2.7 25.7 0.5 0.4 1.0 0.7 19.1 32.8 64.3 58.625 Muy bajo 0.918
01 Aguascalientes 01007 Rincón de Romos 57 369 2020 3.4 27.1 1.0 0.5 1.0 1.3 21.0 44.3 76.6 57.647 Muy bajo 0.903
01 Aguascalientes 01008 San José de Gracia 9 552 2020 2.4 28.4 2.1 0.9 1.7 0.9 21.6 41.3 75.4 57.528 Muy bajo 0.901
01 Aguascalientes 01009 Tepezalá 22 485 2020 4.2 35.1 1.4 0.6 1.1 1.4 23.0 76.8 76.9 56.604 Muy bajo 0.886
01 Aguascalientes 01010 El Llano 20 853 2020 3.9 34.8 2.3 1.0 1.8 1.5 21.8 69.8 76.3 56.556 Muy bajo 0.886
01 Aguascalientes 01011 San Francisco de los Romo 61 997 2020 2.4 28.5 0.2 0.3 0.5 0.7 18.5 41.1 65.9 58.552 Muy bajo 0.917
02 Baja California 02001 Ensenada 443 807 2020 2.3 25.2 0.3 1.4 4.6 1.7 13.8 13.6 79.4 58.082 Muy bajo 0.909
02 Baja California 02002 Mexicali 1 049 792 2020 1.6 21.5 0.2 0.4 0.7 1.2 12.6 11.4 69.9 59.385 Muy bajo 0.930
02 Baja California 02003 Tecate 108 440 2020 2.0 27.3 0.3 1.0 3.2 1.6 14.0 20.4 74.0 58.390 Muy bajo 0.914
02 Baja California 02004 Tijuana 1 922 523 2020 1.5 24.6 0.2 0.2 1.2 2.1 15.0 1.7 74.6 59.140 Muy bajo 0.926
02 Baja California 02005 Playas de Rosarito 126 890 2020 2.0 29.7 0.3 0.4 5.0 2.7 15.4 15.8 72.8 58.291 Muy bajo 0.913
02 Baja California 02006 San Quintín 117 568 2020 8.1 47.2 0.5 5.5 16.8 4.4 31.1 54.4 65.8 53.399 Medio 0.836
03 Baja California Sur 03001 Comondú 73 021 2020 4.1 32.3 0.5 1.3 1.6 2.9 16.1 19.6 62.6 58.264 Muy bajo 0.912
03 Baja California Sur 03002 Mulegé 64 022 2020 4.2 33.6 1.0 2.2 2.9 3.3 21.2 39.3 55.3 57.493 Muy bajo 0.900
03 Baja California Sur 03003 La Paz 292 241 2020 1.8 19.9 0.4 1.1 2.4 2.1 12.0 9.8 48.3 59.853 Muy bajo 0.937
03 Baja California Sur 03008 Los Cabos 351 111 2020 2.1 23.9 0.2 0.6 9.3 8.4 24.6 3.5 38.1 58.736 Muy bajo 0.920
03 Baja California Sur 03009 Loreto 18 052 2020 2.2 26.0 1.0 0.8 2.9 3.8 19.4 9.6 56.7 58.819 Muy bajo 0.921
04 Campeche 04001 Calkiní 59 232 2020 9.3 31.9 7.4 0.6 1.8 2.1 34.0 28.3 79.0 55.381 Bajo 0.867
04 Campeche 04002 Campeche 294 077 2020 3.3 23.0 0.7 0.3 0.7 1.0 24.2 9.9 67.7 58.641 Muy bajo 0.918
04 Campeche 04003 Carmen 248 845 2020 3.9 26.5 0.7 0.7 5.8 2.4 27.4 14.9 55.0 58.095 Muy bajo 0.910

<>

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