En el taller de EDA encontramos que la percepción de inseguridad se relaciona más con el entorno, como la cercanía a ollas de microtráfico (0,67) y a lotes oscuros (0,35), que con las denuncias de hurto (−0,39). Por eso queremos medir el deterioro del entorno de cada UPZ con cuatro variables de la Encuesta Multipropósito: el porcentaje de viviendas que tienen cerca ollas, lotes baldíos u oscuros, basureros y bares. Un valor alto en el índice significa que una mayor parte de las viviendas de esa UPZ convive con estos factores de deterioro.
Los cuatro indicadores miden el mismo concepto: qué porcentaje de las viviendas de cada UPZ tiene cerca un factor de deterioro. En los cuatro, un valor alto significa más deterioro, por eso ninguno se invierte.
indicadores <- tribble(
~variable, ~nombre, ~dimension,
"pct_cerca_ollas", "Cerca de ollas (%)", "Microtráfico",
"pct_cerca_lotes_oscuros", "Cerca de lotes oscuros (%)", "Espacio público",
"pct_cerca_basureros", "Cerca de basureros (%)", "Aseo y salubridad",
"pct_cerca_bares", "Cerca de bares o prostíbulos (%)", "Vida nocturna"
)
upz_ok |>
select(all_of(indicadores$variable)) |>
pivot_longer(everything(), names_to = "variable", values_to = "valor") |>
group_by(variable) |>
summarise(Mínimo = min(valor), Mediana = median(valor), Máximo = max(valor)) |>
right_join(indicadores, by = "variable") |>
transmute(Indicador = nombre, Dimensión = dimension,
Sentido = "↑ más deterioro",
Mínimo = num(Mínimo, 1), Mediana = num(Mediana, 1), Máximo = num(Máximo, 1)) |>
tabla_bonita()| Indicador | Dimensión | Sentido | Mínimo | Mediana | Máximo |
|---|---|---|---|---|---|
| Cerca de bares o prostíbulos (%) | Vida nocturna | ↑ más deterioro | 0,6 | 13,1 | 53,9 |
| Cerca de basureros (%) | Aseo y salubridad | ↑ más deterioro | 0,2 | 6,1 | 45,0 |
| Cerca de lotes oscuros (%) | Espacio público | ↑ más deterioro | 0,6 | 18,2 | 59,8 |
| Cerca de ollas (%) | Microtráfico | ↑ más deterioro | 0,3 | 20,9 | 75,6 |
La diferencia entre UPZ es grande: en algunas casi ninguna vivienda
tiene ollas cerca (0,3 %) y en otras tres de cada cuatro (75,6 %). Los
basureros son el factor menos común (mediana de 6,1 %), pero con algunas
UPZ muy altas: por eso llevan log1p() en el siguiente
paso.
# 1. Variables del mismo concepto: deterioro del entorno de la vivienda
vars_indice <- c("pct_cerca_ollas", "pct_cerca_lotes_oscuros",
"pct_cerca_basureros", "pct_cerca_bares")
# 2. Orientar y transformar: las cuatro ya crecen con el deterioro (ninguna va por -1).
# Basureros tiene cola larga (asimetría 1,8): log1p() la comprime.
X <- upz_ok |>
select(all_of(vars_indice)) |>
mutate(pct_cerca_basureros = log1p(pct_cerca_basureros))nombres_ind <- c(pct_cerca_ollas = "Ollas de microtráfico",
pct_cerca_lotes_oscuros = "Lotes oscuros",
pct_cerca_basureros = "Basureros (log)",
pct_cerca_bares = "Bares")
cor(X) |>
as.data.frame() |>
rownames_to_column("var1") |>
pivot_longer(-var1, names_to = "var2", values_to = "r") |>
mutate(var1 = factor(nombres_ind[var1], levels = nombres_ind),
var2 = factor(nombres_ind[var2], levels = nombres_ind)) |>
filter(as.integer(var1) >= as.integer(var2)) |> # triángulo inferior + diagonal
ggplot(aes(var2, fct_rev(var1), fill = r)) +
geom_tile(color = "white", linewidth = 1) +
geom_text(aes(label = num(r, 2), color = abs(r) > 0.5), fontface = "bold", size = 4) +
scale_fill_gradient2(low = azul, mid = "white", high = vino, midpoint = 0,
limits = c(-1, 1), name = "Correlación") +
scale_color_manual(values = c(`TRUE` = "white", `FALSE` = noche), guide = "none") +
labs(title = "Las cuatro señales de deterioro aumentan juntas",
subtitle = "Correlación entre las variables del índice · 104 UPZ",
x = NULL, y = NULL, caption = fuente) +
tema_clase +
theme(panel.grid = element_blank(), axis.text.x = element_text(angle = 30, hjust = 1))Todas las correlaciones son positivas (entre 0,37 y 0,81): donde hay más ollas de microtráfico cerca de las viviendas también hay más basureros, lotes oscuros y bares. La relación más fuerte es entre ollas y basureros (0,81), y la más débil entre bares y lotes oscuros (0,37).
## [1] 0.74
El KMO de 0,74 lo confirma: las cuatro variables comparten suficiente información para resumirlas en un solo número.
# 4. El PCA. orientar_pc1() deja PC1 de modo que alto = más deterioro
pca <- orientar_pc1(prcomp(Z))
# Cuánta información guarda cada componente
# Varianza explicada: cuánta información guarda cada componente
varianza <- tibble(
componente = paste0("PC", seq_along(pca$sdev)),
autovalor = pca$sdev^2,
pct = 100 * autovalor / sum(autovalor),
acumulado = cumsum(pct)
)
varianza |>
mutate(across(c(autovalor, pct, acumulado), ~ num(.x, 1))) |>
tabla_bonita() |>
row_spec(1, bold = TRUE, background = "#F8E9EC")| componente | autovalor | pct | acumulado |
|---|---|---|---|
| PC1 | 2,8 | 70,2 | 70,2 |
| PC2 | 0,7 | 17,6 | 87,8 |
| PC3 | 0,3 | 8,2 | 96,0 |
| PC4 | 0,2 | 4,0 | 100,0 |
# Cargas de PC1 y PC2: cuánto pesa cada variable en cada componente
pct <- 100 * pca$sdev^2 / sum(pca$sdev^2)
as_tibble(pca$rotation[, 1:2], rownames = "variable") |>
mutate(nombre = nombres_ind[variable]) |>
pivot_longer(c(PC1, PC2), names_to = "componente", values_to = "carga") |>
mutate(componente = if_else(componente == "PC1",
paste0("PC1 · ", num(pct[1], 1), " %"),
paste0("PC2 · ", num(pct[2], 1), " %"))) |>
ggplot(aes(carga, reorder(nombre, carga), fill = carga > 0)) +
geom_col(width = 0.7) +
geom_vline(xintercept = 0, color = "grey40") +
geom_text(aes(label = num(carga, 2), hjust = if_else(carga > 0, -0.2, 1.2)), size = 3.4) +
facet_wrap(~ componente) +
scale_fill_manual(values = c(`TRUE` = vino, `FALSE` = azul), guide = "none") +
scale_x_continuous(limits = c(-1, 1.1)) +
labs(title = "PC1 pesa las cuatro variables en la misma dirección; PC2 separa los bares del resto",
subtitle = "Cargas de cada variable en los dos primeros componentes",
x = "Carga", y = NULL, caption = fuente) +
tema_clase +
theme(strip.text = element_text(face = "bold", size = 11))PC1 guarda el 70 % de la información de las cuatro variables, y todas sus cargas son positivas: las cuatro aumentan juntas, así que PC1 funciona como índice. Las ollas (31 %) y los basureros (28 %) son lo que más pesa, seguidos de los lotes oscuros (25 %) y los bares (16 %).
La mitad de las UPZ tiene un índice entre 23 y 52, con una mediana de 39,7: el deterioro del entorno es bajo o medio en la mayor parte de la ciudad. El índice se dispara en un grupo pequeño de 8 UPZ que superan 70, entre ellas Corabastos, La Sabana, Las Cruces y Puente Aranda en el centro, y Comuneros, Monte Blanco y El Tesoro en el sur. Más que un problema generalizado, el deterioro alto se concentra en unos pocos territorios, que son los que conviene priorizar.
# 5. El índice de 0 a 100: 0 = la UPZ con menos deterioro, 100 = la de más deterioro
upz_ok <- upz_ok |> mutate(indice = rescale(pca$x[, 1], to = c(0, 100)))
# Control de calidad: el índice debe ir en la misma dirección que el promedio
# simple de las variables estandarizadas (correlación cercana a 1)
cor(upz_ok$indice, rowMeans(Z))## [1] 0.9986207
mediana_indice <- median(upz_ok$indice)
n_altas <- sum(upz_ok$indice >= 70)
ggplot(upz_ok, aes(indice, fill = indice >= 70)) +
geom_histogram(binwidth = 4, boundary = 0, color = "white") +
geom_vline(xintercept = mediana_indice, color = azul, linetype = "dashed", linewidth = 0.9) +
annotate("text", x = mediana_indice - 1, y = Inf, vjust = 1.5, hjust = 1,
label = paste0("Mediana: ", num(mediana_indice, 1)),
color = azul, fontface = "bold", size = 3.6) +
annotate("text", x = 85, y = 4.2,
label = paste(n_altas, "UPZ por encima de 70"),
color = vino, fontface = "bold", size = 3.6) +
scale_fill_manual(values = c(`FALSE` = gris, `TRUE` = vino), guide = "none") +
labs(title = "La mayoría de las UPZ tiene un deterioro bajo o medio; unas pocas se disparan",
subtitle = paste0("Distribución del índice de deterioro del entorno · ", nrow(upz_ok), " UPZ"),
x = "Índice de deterioro del entorno (0 = menos, 100 = más)",
y = "N.º de UPZ", caption = fuente) +
tema_clasegrafico_ranking(upz_ok, "indice",
titulo = "Corabastos y el centro encabezan el deterioro del entorno; el norte casi no lo tiene",
subtitulo = "Índice de deterioro del entorno (0–100) · las 10 UPZ más altas y las 10 más bajas")¿Qué nos dice el índice? PC1 guarda el 70 % de la información de las cuatro variables y todas sus cargas son positivas, así que sirve como índice: cuando una UPZ tiene más viviendas cerca de ollas, también suele tener más cerca basureros, lotes oscuros y bares. Las ollas y los basureros son lo que más pesa.
El deterioro se concentra en dos zonas. La primera es el centro y el corredor de Corabastos: Corabastos (100), La Sabana (98,9), Las Cruces (91,1) y Puente Aranda (89,5). La segunda es la periferia sur, con Comuneros en Usme, Monte Blanco y El Tesoro en Ciudad Bolívar, y El Porvenir en Bosa. En el otro extremo, las UPZ con menos deterioro están en el norte, en Suba, Usaquén y Teusaquillo, con valores cercanos a 0. Varias de estas UPZ, como Corabastos, La Sabana y El Tesoro, ya aparecían en el taller de EDA entre las de mayor percepción de inseguridad.
Algunas UPZ tienen exactamente el mismo valor, como Zona Industrial y Puente Aranda (89,5) o tres UPZ de Usaquén (5,8). Esto pasa porque la Encuesta Multipropósito reporta valores agrupados para UPZ vecinas, no porque sean iguales en la realidad.
El índice resume el deterioro del entorno en un número, pero no dice si ese deterioro va acompañado de miedo, de delitos o de condiciones de vida difíciles. Dos UPZ con el mismo índice pueden ser muy distintas. Por eso cruzamos el índice con cuatro variables: el % de viviendas de estrato 1–2 (condiciones de vida), la percepción de inseguridad, que dejamos por fuera del índice justamente para cruzarla aquí, y las dos tasas que analizamos en el EDA, hurto a personas y violencia intrafamiliar.
# 1. El índice + 4 variables de otros temas (estrato, percepción y delitos)
vars_segmento <- c("indice", "pct_estrato_1_2", "pct_percibe_inseguridad",
"tasa_hurto_personas", "tasa_violencia_intrafamiliar")
# 2. Estandarizar. Las dos tasas tienen colas muy largas (asimetría 3,2 y 5,7): log1p()
Z_seg <- upz_ok |>
select(all_of(vars_segmento)) |>
mutate(tasa_hurto_personas = log1p(tasa_hurto_personas),
tasa_violencia_intrafamiliar = log1p(tasa_violencia_intrafamiliar)) |>
scale()
# 3. ¿Cuántos grupos? Codo y silhouette para K de 2 a 8, resaltando el K elegido
K <- 4
set.seed(2026)
distancias <- dist(Z_seg)
tabla_k <- map_dfr(2:8, function(k) {
km_k <- kmeans(Z_seg, centers = k, nstart = 50)
tibble(k = k, wss = km_k$tot.withinss,
silhouette = mean(silhouette(km_k$cluster, distancias)[, 3]))
})
g_codo <- ggplot(tabla_k, aes(k, wss)) +
geom_line(color = noche) +
geom_point(color = noche, size = 2.5) +
geom_point(data = filter(tabla_k, k == K), color = vino, size = 4) +
scale_x_continuous(breaks = 2:8) +
labs(title = "Codo: después de K = 4 la ganancia se aplana",
x = "K", y = "WSS (suma de distancias²)") +
tema_clase
g_silu <- ggplot(tabla_k, aes(k, silhouette, fill = k == K)) +
geom_col(width = 0.7) +
geom_text(aes(label = num(silhouette, 2)), vjust = -0.4, size = 3.2) +
scale_fill_manual(values = c(`TRUE` = vino, `FALSE` = gris), guide = "none") +
scale_x_continuous(breaks = 2:8) +
labs(title = "Silhouette: K = 3 y K = 4 separan mejor",
x = "K", y = "Silhouette promedio") +
tema_clase
g_codo | g_silu
El codo muestra que la WSS baja mucho de K = 2 a K = 4 y después se
aplana: agregar más grupos ya no mejora mucho. La silhouette es más alta
en K = 3 (0,43) y en K = 4 (0,36) queda cerca. Elegimos K =
4 porque, además de cumplir los dos criterios, separa las UPZ
de estratos altos del norte de las de estrato medio, algo que con K = 3
quedaba mezclado en un solo grupo.
# 4. El K-Means con el K elegido
set.seed(2026)
km <- kmeans(Z_seg, centers = K, nstart = 50)
upz_ok <- upz_ok |> mutate(segmento = factor(km$cluster))
# 5. Nombres: ordenamos los grupos por su índice (de menor a mayor deterioro)
orden <- upz_ok |>
group_by(segmento) |>
summarise(m = median(indice)) |>
arrange(m) |>
pull(segmento)
nombres_seg <- c("Entorno cuidado, hurto alto", "Miedo moderado, hurto medio",
"Más miedo, menos hurto", "Deterioro y delito al máximo")
upz_ok <- upz_ok |>
mutate(segmento_nombre = factor(nombres_seg[match(segmento, orden)], levels = nombres_seg))
# 6. El perfil de cada segmento en valores reales
grafico_perfil(upz_ok, vars_segmento, grupo = "segmento_nombre",
titulo = "Cuatro tipos de UPZ: el miedo es mayor en la periferia y el delito en el centro")| Segmento | UPZ más pobladas |
|---|---|
| Entorno cuidado, hurto alto | Los Cedros, El Prado, Britalia, Niza |
| Miedo moderado, hurto medio | Suba, Garces Navas, Castilla, Timiza |
| Más miedo, menos hurto | Tibabuyes, El Rincon, Bosa Central, Bosa Occidental |
| Deterioro y delito al máximo | La Sabana, La Candelaria, Las Nieves, Puente Aranda |
Entorno cuidado, hurto alto · 24 UPZ ·
1,3 millones de personas
Se caracteriza por tener el menor
deterioro del entorno (11,6) y la menor percepción de
inseguridad (37 %). Son UPZ del norte, de estratos altos, con
los salarios y la educación más altos. Lo que lo hace diferente es que,
a pesar de su entorno cuidado, tiene la segunda tasa de hurto
más alta (148), posiblemente por la población flotante de
oficinas y comercio y una mayor cultura de denuncia. Ejemplos: Los
Cedros, Niza, Country Club.
Miedo moderado, hurto medio · 32 UPZ ·
2,5 millones de personas
Se caracteriza por ser de estrato
medio, con un deterioro moderado (34,1) y una percepción de
inseguridad igual a la de la UPZ típica (66 %). Lo que
lo hace diferente es que todo está cerca del promedio de
Bogotá: su hurto (126) es menor que el del norte y su violencia
intrafamiliar es intermedia. Ejemplos: Suba, Castilla, Timiza.
Más miedo, menos hurto · 42 UPZ · 4,1
millones de personas
Se caracteriza por ser el grupo más
grande: casi todas sus viviendas son de estrato
1–2, tiene un deterioro medio-alto (51,9) y la mayor
percepción de inseguridad (74 %). Lo que lo hace diferente es
que tiene la tasa de hurto más baja (48): aquí el miedo
no viene del hurto, sino del entorno. Su violencia intrafamiliar (22,5)
está por encima de la mediana. Ejemplos: Tibabuyes, Bosa Central,
Lucero.
Deterioro y delito al máximo · 6 UPZ ·
0,1 millones de personas
Se caracteriza por tener el mayor
deterioro del entorno (73,1) y las tasas más altas de
hurto (852) y de violencia intrafamiliar (63).
Lo que lo hace diferente es que son UPZ del centro con pocos
residentes y mucha población flotante, lo que infla sus tasas
por habitante. Ejemplos: La Sabana, Las Nieves, Puente Aranda.
# Colores de los segmentos (se usan también en el mapa)
colores_segmentos <- c(azul, "#E3A21A", vino, noche)
medianas_seg <- upz_ok |>
group_by(segmento_nombre) |>
summarise(mediana = median(indice))
set.seed(1)
ggplot(upz_ok, aes(indice, fct_rev(segmento_nombre), color = segmento_nombre)) +
scale_y_discrete() +
annotate("rect", xmin = 35, xmax = 50, ymin = 0.5, ymax = 4.5,
fill = NA, color = "grey50", linetype = "dashed") +
annotate("text", x = 51, y = 4.4, hjust = 0, vjust = 1, size = 3.4, fontface = "bold",
color = "grey25", label = "Mismo índice,\ncuatro realidades") +
geom_jitter(height = 0.2, width = 0, alpha = 0.4, size = 2) +
geom_point(data = medianas_seg, aes(mediana, fct_rev(segmento_nombre)),
shape = 21, fill = "white", size = 5, stroke = 1.8) +
geom_text(data = medianas_seg, aes(mediana, fct_rev(segmento_nombre), label = num(mediana)),
nudge_y = -0.3, fontface = "bold", size = 3.6) +
scale_color_manual(values = colores_segmentos, guide = "none") +
scale_x_continuous(limits = c(-2, 102)) +
labs(title = "Mismo deterioro, realidades distintas",
subtitle = "Índice de deterioro del entorno por segmento (círculo = mediana; cada punto, una UPZ)",
x = "Índice de deterioro del entorno (0–100)", y = NULL, caption = fuente) +
tema_clase +
theme(axis.text.y = element_text(face = "bold", size = 11), panel.grid.major.y = element_blank())Entre 35 y 50 en el índice aparecen UPZ de los cuatro segmentos: el mismo nivel de deterioro puede venir con realidades muy distintas. Las Nieves, Galerías, Tibabuyes y Granjas de Techo tienen un índice cercano a 47, pero Las Nieves registra 1.488 denuncias de hurto por 10.000 habitantes y Tibabuyes solo 32, mientras que Tibabuyes tiene la mayor percepción de inseguridad (73 %). El índice dice cuánto deterioro hay; la segmentación dice con qué viene acompañado.
sil <- silhouette(km$cluster, distancias)
datos_sil <- upz_ok |>
mutate(silhouette = sil[, 3]) |>
arrange(segmento_nombre, desc(silhouette)) |>
mutate(posicion = row_number())
sil_promedio <- mean(datos_sil$silhouette)
ggplot(datos_sil, aes(posicion, silhouette, fill = segmento_nombre)) +
geom_col(width = 1) +
geom_hline(yintercept = 0, color = "grey60") +
geom_hline(yintercept = sil_promedio, linetype = "dashed", color = noche) +
scale_fill_manual(values = colores_segmentos, name = NULL) +
labs(title = "La mayoría de las UPZ encaja en su segmento; pocas quedan «de frontera»",
subtitle = paste0("Silhouette de cada UPZ (bajo cero = más cerca de otro segmento) · promedio = ",
num(sil_promedio, 2)),
x = "UPZ, ordenadas dentro de cada segmento", y = "Silhouette", caption = fuente) +
guides(fill = guide_legend(nrow = 2)) +
tema_clase +
theme(axis.text.x = element_blank(), panel.grid.major.x = element_blank(),
legend.position = "bottom")La silhouette mide qué tan bien encaja cada UPZ en su segmento: cerca de 1 = muy bien, cerca de 0 = en la frontera entre dos grupos, bajo cero = más parecida a otro segmento. El promedio es de 0,36 y solo dos UPZ quedan bajo cero: La Candelaria y Verbenal. “Entorno cuidado” y “Más miedo, menos hurto” son los segmentos más compactos; “Deterioro y delito al máximo” es el más heterogéneo, porque reúne pocas UPZ con valores muy extremos.
Si el deterioro del entorno sigue la misma lógica que encontramos en el EDA, esperamos verlo concentrado en el sur y la periferia, donde predominan los estratos 1–2, y en el centro histórico, con poco deterioro en el norte. Los mapas permiten comprobar si los segmentos forman zonas continuas de la ciudad o si están dispersos.
mapa_continuo(upz_ok, "indice",
titulo = "El deterioro del entorno crece hacia el sur y el centro; el norte casi no lo tiene",
subtitulo = "Índice de deterioro del entorno (0–100) por UPZ",
leyenda = "Índice\n(0–100)")El índice tiene una geografía clara. Los valores más bajos forman una franja en el norte y el nororiente (Usaquén, Chapinero y Teusaquillo), y los más altos se concentran en el sur y el suroccidente (Ciudad Bolívar, Usme, Bosa y Kennedy) y en el centro histórico. El punto más oscuro es Corabastos, en Kennedy. El deterioro del entorno sigue la misma división norte–sur que vimos en el EDA con los estratos.
mapa_categorico(upz_ok, "segmento_nombre",
titulo = "Los segmentos forman anillos: norte cuidado, centro crítico y periferia con miedo",
subtitulo = "Segmento de cada UPZ según K-Means (K = 4)")# Un panel por segmento: cada uno en su color sobre el resto de la ciudad en gris
fondo <- upz_shp |> select(geometry)
mapa_seg <- upz_shp |> select(upz_cod) |> inner_join(upz_ok, by = "upz_cod")
ggplot() +
geom_sf(data = fondo, fill = "#EEEEF0", color = "white", linewidth = 0.1) +
geom_sf(data = mapa_seg, aes(fill = segmento_nombre), color = "white", linewidth = 0.1) +
facet_wrap(~ segmento_nombre, nrow = 1) +
scale_fill_manual(values = colores_segmentos, guide = "none") +
labs(title = "Dónde está cada segmento",
subtitle = "UPZ de cada segmento (en color) sobre el resto de la ciudad (gris)",
caption = fuente) +
tema_mapa +
theme(strip.text = element_text(face = "bold", size = 9.5))Los segmentos no están dispersos: forman zonas continuas. Entorno cuidado, hurto alto ocupa el norte y el nororiente, con una isla en el occidente (Ciudad Salitre, Modelia). Miedo moderado, hurto medio forma un anillo intermedio en Engativá, Kennedy, Puente Aranda y el centro de Suba. Más miedo, menos hurto rodea la ciudad por el sur, el occidente y el noroccidente (Bosa, Ciudad Bolívar, Usme, Tibabuyes). Deterioro y delito al máximo se concentra en el centro histórico. UPZ con un índice parecido, como las del centro y las de Bosa, quedaron en segmentos distintos: en el centro el deterioro viene con mucho delito; en la periferia, con miedo.
peso <- upz_ok |>
group_by(segmento_nombre) |>
summarise(`% del territorio` = sum(area_km2),
`% de las UPZ` = n(),
`% de la población` = sum(poblacion)) |>
mutate(across(-segmento_nombre, ~ 100 * .x / sum(.x)))
peso |>
pivot_longer(-segmento_nombre, names_to = "medida", values_to = "pct") |>
mutate(medida = factor(medida, levels = c("% del territorio", "% de las UPZ", "% de la población"))) |>
ggplot(aes(pct, fct_rev(segmento_nombre), fill = segmento_nombre)) +
geom_col(width = 0.7) +
geom_text(aes(label = paste0(num(pct, 0), " %")), hjust = -0.15, size = 3.3) +
facet_wrap(~ medida) +
scale_fill_manual(values = colores_segmentos, guide = "none") +
scale_x_continuous(limits = c(0, 65), labels = function(x) paste0(x, " %")) +
labs(title = "La mitad de la población analizada vive en el segmento con más miedo",
subtitle = "Peso de cada segmento según territorio, número de UPZ y población",
x = NULL, y = NULL, caption = fuente) +
tema_clase +
theme(strip.text = element_text(face = "bold", size = 11), axis.text.y = element_text(face = "bold"))Más miedo, menos hurto ocupa el 43 % del territorio analizado, pero allí vive el 52 % de la población: es el segmento más grande en todo sentido. En el otro extremo, Deterioro y delito al máximo se ve llamativo en el mapa por estar en el centro, pero reúne solo el 1 % de la población. Al leer el mapa hay que recordar que el color no es gente: el problema más extendido no es el del centro, sino el de la periferia.
¿Qué muestra la segmentación que el índice solo no mostraba? En el mapa del índice, el centro y la periferia sur se ven parecidos: los dos tienen deterioro alto. La segmentación muestra que son problemas distintos: en el centro el deterioro viene con las tasas más altas de hurto y violencia intrafamiliar, y en la periferia, con la mayor percepción de inseguridad y poco hurto denunciado.