-
Notifications
You must be signed in to change notification settings - Fork 0
/
06_Normalizacion.Rmd
156 lines (126 loc) · 7.33 KB
/
06_Normalizacion.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Índice normalizado {.unlisted .unnumbered}
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`.
```{r}
# 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))
}
```
```{r, echo = FALSE}
# Tabla
tabla <- desvest[[2]] %>%
tibble::rownames_to_column()
tabla %>%
gt() %>%
tab_header(title = "Desviación estándar") %>%
tab_options(heading.title.font.size = 14,
heading.align = "center",
heading.padding = 5,
heading.subtitle.font.size = 12,
table.align = "center",
table.font.names = 'Century Gothic',
table.font.size = 10,
data_row.padding = px(1)) %>%
tab_style(style = list(cell_text(align = "center",
weight = 'bold')),
locations = list(cells_title(groups = c("title")))) %>%
cols_label(`desvest` = md("**Desviación estándar**"),
`sd_muestral` = md("**Desviación estándar muestral**"),
`desvest.inversa` = md("**Desviación estandar m. inversa**")) %>%
fmt_number(columns = c(1:4), decimals = 3) %>%
as_raw_html()
```
## 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.
```{r}
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.
```{r}
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)))
}
```
::: {style="height:700px;overflow:auto;"}
```{r, echo=FALSE}
#Tabla final
DP2_2020 %>%
rename("AÑO" = "ANIO") %>%
slice(1:25) %>%
gt() %>%
tab_header(title = "Índice de marginación a nivel localidad, 2020") %>%
tab_options(heading.title.font.size = 14,
heading.align = "center",
heading.subtitle.font.size = 12,
table.align = "center",
column_labels.font.weight = "bold",
table.font.names = 'Century Gothic',
table.font.size = 10,
data_row.padding = px(1)) %>%
tab_style(style = list(cell_text(align = "center",
weight = 'bold')),
locations = list(cells_title(groups = c("title")))) %>%
fmt_integer(columns = "POB_TOT", sep_mark = " ") %>%
fmt_number(columns = c(10:17), decimals = 1) %>%
fmt_number(columns = c(18, 20), decimals = 3) %>%
cols_width(starts_with("POB") ~ px(100),
starts_with("NOM") ~ px(260),
everything() ~ px(60)) %>%
cols_label(IMN = md("IMN_2020")) %>%
as_raw_html()
```
:::
<\br>
```{r, eval = FALSE}
#Tabla final
for(i in tablas){
save(get(paste0("DP2_", i)), file = paste0(here::here(), "/Output/IML_", i, ".RData"))
}
```