BD1 <- read_excel("C:/Users/usuario/Downloads/bases_diccionario/BD1.xlsx")
BD2 <- read_excel("C:/Users/usuario/Downloads/bases_diccionario/BD2.xlsx")
diccionario1 <- read_excel(
"C:/Users/usuario/Downloads/bases_diccionario/DICCIONARIO_DATOS.xlsx",
sheet = 1
)
diccionario2 <- read_excel(
"C:/Users/usuario/Downloads/bases_diccionario/DICCIONARIO_DATOS.xlsx",
sheet = 2
)
datos <- BD1 %>%
left_join(BD2, by = "REGISTRO")
diccionario2 <- diccionario2 %>%
mutate(across(everything(), as.character))
datos_chr <- datos %>%
mutate(across(everything(), as.character))
dic_por_variable <- split(diccionario2, diccionario2$Valor)
for (var in names(dic_por_variable)) {
if (var %in% names(datos_chr)) {
dic <- dic_por_variable[[var]]
etiquetas <- setNames(
dic$Etiqueta,
dic$Resultado
)
datos_chr[[paste0(var, "_texto")]] <-
etiquetas[datos_chr[[var]]]
}
}
Interpretación general
La caracterización sociodemográfica evidencia una distribución relativamente equilibrada por género, con predominio de población adulta joven y adulta. Los estratos socioeconómicos se concentran principalmente en niveles medios, mientras que las ocupaciones reportadas muestran una participación importante de personas vinculadas al mercado laboral y actividades académicas. Estas características permiten contextualizar los resultados posteriores sobre percepción de seguridad y victimización, dado que factores como la edad, el género y la condición socioeconómica pueden influir en la experiencia y percepción frente a los fenómenos de seguridad ciudadana.
tabla_genero <- table(datos_chr$GENERO_texto)
porcentajes <- round(
100 * tabla_genero / sum(tabla_genero),
1
)
bp <- barplot(
tabla_genero,
main = "Distribución por género",
col = c("lightblue", "pink"),
las = 1,
cex.names = 1,
ylim = c(0, max(tabla_genero) * 1.5)
)
text(
x = bp,
y = tabla_genero,
labels = paste0(
tabla_genero,
"\n(",
porcentajes,
"%)"
),
pos = 3,
cex = 0.9
)
breaks <- c(0,20,40,60,80,100)
histograma <- hist(
datos$PC_EDAD,
breaks = breaks,
main = "Distribución de edades",
col = "lightgreen",
xlab = "Edad",
ylab = "Frecuencia"
)
porcentajes <- round(
100 * histograma$counts /
sum(histograma$counts),
1
)
text(
x = histograma$mids,
y = histograma$counts,
labels = paste0(
histograma$counts,
" (",
porcentajes,
"%)"
),
pos = 3,
cex = 0.7
)
tabla_estrato <- table(datos_chr$ESTRATO_DEC_texto)
porc_estrato <- round(
100 * tabla_estrato /
sum(tabla_estrato),
1
)
bp <- barplot(
tabla_estrato,
main = "Distribución por estrato socioeconómico",
col = "orange",
las = 2,
cex.names = 0.8,
ylim = c(0, max(tabla_estrato) * 1.5)
)
text(
bp,
tabla_estrato,
labels = paste0(
tabla_estrato,
"\n(",
porc_estrato,
"%)"
),
pos = 3,
cex = 0.8
)
freq <- table(datos_chr$PD_texto)
df <- as.data.frame(freq)
colnames(df) <- c(
"Etiqueta",
"Frecuencia"
)
df <- df %>%
mutate(
Porcentaje = round(
100 * Frecuencia /
sum(Frecuencia),
1
)
) %>%
arrange(desc(Frecuencia))
ggplot(
df,
aes(
x = reorder(Etiqueta, Frecuencia),
y = Frecuencia
)
) +
geom_col(fill = "steelblue") +
geom_text(
aes(
label = paste0(
Frecuencia,
" (",
Porcentaje,
"%)"
)
),
hjust = -0.1,
size = 3
) +
coord_flip() +
expand_limits(y = max(df$Frecuencia) * 1.25) +
labs(
title = "Participación por ocupación",
x = "",
y = "Frecuencia"
) +
theme_minimal() +
theme(
axis.text.y = element_text(size = 8)
)
Interpretación general
Los resultados muestran que la percepción de seguridad disminuye a medida que aumenta la escala territorial analizada. En general, los ciudadanos suelen percibir mayores niveles de seguridad en su entorno inmediato, donde existe un mayor conocimiento del territorio y de las personas que lo habitan. Por el contrario, la percepción sobre la ciudad suele estar influenciada por experiencias indirectas, noticias sobre hechos delictivos y problemáticas observadas en otros sectores urbanos. Este comportamiento evidencia que la cercanía con el entorno genera una sensación de control y confianza superior a la percepción construida sobre espacios más amplios.
tabla_p1 <- table(datos_chr$P1_texto)
porc_p1 <- round(
100 * tabla_p1 /
sum(tabla_p1),
1
)
barplot(
tabla_p1,
main = "Percepción de seguridad en el barrio",
col = "lightblue",
las = 2,
cex.names = 0.8,
ylim = c(0, max(tabla_p1)*1.4)
)
text(
x = seq_along(tabla_p1),
y = tabla_p1,
labels = paste0(
tabla_p1,
" (",
porc_p1,
"%)"
),
pos = 3
)
tabla_p3 <- table(datos_chr$P3_texto)
porc_p3 <- round(
100 * tabla_p3 /
sum(tabla_p3),
1
)
bp <- barplot(
tabla_p3,
main = "Percepción de seguridad en la comuna",
col = "lightgreen",
las = 2,
cex.names = 0.8,
ylim = c(0, max(tabla_p3) * 1.5)
)
text(
bp,
tabla_p3,
labels = paste0(
tabla_p3,
"\n(",
porc_p3,
"%)"
),
pos = 3,
cex = 0.8
)
tabla_p5 <- table(datos_chr$P5_texto)
porc_p5 <- round(
100 * tabla_p5 /
sum(tabla_p5),
1
)
bp <- barplot(
tabla_p5,
main = "Percepción de seguridad en la ciudad",
col = "lightcoral",
las = 2,
cex.names = 0.8,
ylim = c(0, max(tabla_p5) * 1.5)
)
text(
bp,
tabla_p5,
labels = paste0(
tabla_p5,
"\n(",
porc_p5,
"%)"
),
pos = 3,
cex = 0.8
)
Interpretación general
Se identifican diferencias en la percepción de seguridad entre grupos poblacionales. Las mujeres tienden a reportar menores niveles de seguridad, situación que puede estar asociada a una mayor percepción de vulnerabilidad frente a determinados delitos o situaciones de riesgo en el espacio público. Asimismo, los estratos socioeconómicos más bajos muestran mayores preocupaciones relacionadas con la seguridad urbana, lo que podría reflejar condiciones diferenciales de exposición al riesgo, presencia de problemáticas sociales o menores recursos para afrontar situaciones de inseguridad.
tabla_genero_seg <- datos_chr %>%
count(GENERO_texto, P1_texto)
tabla_genero_seg <- tabla_genero_seg %>%
group_by(GENERO_texto) %>%
mutate(
Porcentaje =
round(
100 * n / sum(n),
1
)
)
ggplot(
tabla_genero_seg,
aes(
x = P1_texto,
y = n,
fill = GENERO_texto
)
) +
geom_bar(
stat = "identity",
position = position_dodge(0.9)
) +
geom_text(
aes(
label = paste0(
n,
"\n(",
Porcentaje,
"%)"
)
),
position = position_dodge(0.9),
vjust = -0.2,
size = 3
) +
labs(
title = "Percepción de seguridad en el barrio según género",
x = "",
y = "Frecuencia"
) +
theme_minimal()
tabla_estrato_seg <- datos_chr %>%
filter(
!is.na(ESTRATO_DEC_texto),
!is.na(P5_texto)
) %>%
count(
ESTRATO_DEC_texto,
P5_texto
) %>%
group_by(ESTRATO_DEC_texto) %>%
mutate(
Porcentaje =
round(
100 * n / sum(n),
1
)
)
ggplot(
tabla_estrato_seg,
aes(
x = P5_texto,
y = n,
fill = ESTRATO_DEC_texto
)
) +
geom_bar(
stat = "identity",
position = position_dodge(0.9)
) +
geom_text(
aes(
label = paste0(
n,
"\n(",
Porcentaje,
"%)"
)
),
position = position_dodge(0.9),
vjust = -0.2,
size = 2.8
) +
labs(
title = "Percepción de seguridad en la ciudad según estrato",
x = "",
y = "Frecuencia"
) +
theme_minimal()
Interpretación general
El índice de victimización permite estimar la proporción de personas que reportaron haber sido víctimas de algún delito durante el período analizado. Este indicador constituye una medida complementaria a la percepción de seguridad, ya que refleja experiencias reales de victimización. La comparación entre comunas permite identificar territorios con mayores niveles de exposición al delito y aquellos donde la ocurrencia de hechos victimizantes es relativamente menor.
indice_ciudad <-
sum((datos$P20A == 1) * datos$FACTOR) /
sum(datos$FACTOR)
cat(
"El índice de victimización de la ciudad es de",
round(indice_ciudad * 100, 1),
"%"
)
## El índice de victimización de la ciudad es de 13 %
datos_chr <- datos_chr %>%
mutate(
P20A = as.numeric(as.character(P20A)),
FACTOR = as.numeric(as.character(FACTOR))
)
indice_comuna <- datos_chr %>%
group_by(COMUNA) %>%
summarise(
indice_pct =
100 *
sum((P20A == 1) * FACTOR,
na.rm = TRUE) /
sum(FACTOR,
na.rm = TRUE)
) %>%
arrange(desc(indice_pct))
kable(
indice_comuna,
caption = "Tabla 4. Índice de victimización por comuna"
)
| COMUNA | indice_pct |
|---|---|
| 5 | 21.746892 |
| 13 | 16.537200 |
| 7 | 14.432584 |
| 9 | 14.286346 |
| 90 | 14.279884 |
| 60 | 14.190800 |
| 1 | 14.123762 |
| 80 | 13.555782 |
| 16 | 13.253222 |
| 3 | 12.968673 |
| 10 | 12.257820 |
| 2 | 12.244767 |
| 8 | 11.469986 |
| 11 | 11.422552 |
| 70 | 10.574285 |
| 4 | 9.971491 |
| 6 | 7.260102 |
| 15 | 5.958771 |
| 12 | 4.332111 |
| 50 | 0.000000 |
ggplot(
indice_comuna,
aes(
x = reorder(COMUNA, indice_pct),
y = indice_pct
)
) +
geom_col(fill = "darkred") +
coord_flip() +
labs(
title = "Índice de victimización por comuna",
x = "Comuna",
y = "Porcentaje"
) +
theme_minimal()
max_comuna <- indice_comuna %>%
slice_max(indice_pct)
min_comuna <- indice_comuna %>%
slice_min(indice_pct)
cat(
"La comuna ",
max_comuna$COMUNA,
" presenta el índice de victimización más alto (",
round(max_comuna$indice_pct,1),
"%), mientras que la comuna ",
min_comuna$COMUNA,
" registra el índice más bajo (",
round(min_comuna$indice_pct,1),
"%). Estos resultados evidencian diferencias territoriales importantes en la ocurrencia de hechos victimizantes y sugieren la necesidad de focalizar las estrategias de prevención y seguridad en los territorios con mayor afectación."
)
## La comuna 5 presenta el índice de victimización más alto ( 21.7 %), mientras que la comuna 50 registra el índice más bajo ( 0 %). Estos resultados evidencian diferencias territoriales importantes en la ocurrencia de hechos victimizantes y sugieren la necesidad de focalizar las estrategias de prevención y seguridad en los territorios con mayor afectación.