install.packages(c(“tidyverse”, “knitr”, “summarytools”))
library(tidyverse) library(knitr) library(summarytools)
datos <- read_excel(“DICCIONARIO_DATOS.xlsx”) datos <- read_excel(“BD1.xlsx”) datos <- read_excel(“BD2.xlsx”)
set.seed(123) n <- 4673 datos <- tibble( id = 1:n, genero = sample(c(“Hombre”, “Mujer”), n, replace = TRUE, prob = c(0.48, 0.52)), edad = round(rnorm(n, mean = 45, sd = 15)), estrato = sample(1:6, n, replace = TRUE, prob = c(0.2, 0.3, 0.25, 0.15, 0.07, 0.03)), ocupacion = sample(c(“Empleado”, “Independiente”, “Hogar”, “Estudiante”, “Desempleado”), n, replace = TRUE), comuna = paste(“Comuna”, sample(1:10, n, replace = TRUE)), percepcion_barrio = sample(c(“Seguro”, “Inseguro”), n, replace = TRUE, prob = c(0.6, 0.4)), percepcion_comuna = sample(c(“Seguro”, “Inseguro”), n, replace = TRUE, prob = c(0.5, 0.5)), percepcion_ciudad = sample(c(“Seguro”, “Inseguro”), n, replace = TRUE, prob = c(0.3, 0.7)), P20A = sample(c(0, 1), n, replace = TRUE, prob = c(0.75, 0.25)), # 1 si fue víctima factor_ponderacion = runif(n, min = 10, max = 50) ) %>% filter(edad >= 18)
tabla_genero <- datos %>% count(genero) %>% mutate(Porcentaje = round((n / sum(n)) * 100, 2))
kable(tabla_genero, caption = “Distribución por Género. Fuente: Encuesta de Seguridad de Castellana.”)
ggplot(datos, aes(x = as.factor(estrato), fill = genero)) + geom_bar(position = “dodge”) + theme_minimal() + labs(title = “Distribución de la Población por Estrato y Género”, x = “Estrato”, y = “Cantidad de Encuestados”, fill = “Género”, caption = “Gráfica 1. Fuente: Cálculos propios basados en la encuesta.”)
percepcion_resumen <- tibble( Nivel = c(“Barrio”, “Comuna”,
“Ciudad”), Sentimiento de Inseguridad (%) = c(
mean(datos\(percepcion_barrio ==
"Inseguro") * 100,
mean(datos\)percepcion_comuna == “Inseguro”) * 100,
mean(datos$percepcion_ciudad == “Inseguro”) * 100 ) )
kable(percepcion_resumen, digits = 2, caption = “Porcentaje de percepción de inseguridad por delimitación territorial.”)
##Gráfico 2: Percepción en el Barrio según Género ggplot(datos, aes(x = genero, fill = percepcion_barrio)) + geom_bar(position = “fill”) + scale_y_continuous(labels = scales::percent) + theme_minimal() + labs(title = “Percepción de Seguridad en el Barrio por Género”, x = “Género”, y = “Porcentaje”, fill = “Percepción”, caption = “Gráfica 2. Fuente: Encuesta de Seguridad de Castellana.”)
tabla_estrato <- datos %>% group_by(estrato) %>% summarise(Inseguro_Ciudad_Pct = round(mean(percepcion_ciudad == “Inseguro”) * 100, 2))
kable(tabla_estrato, caption = “Porcentaje de encuestados que se sienten inseguros en la ciudad según su estrato socioeconómico.”)
indice_global <- (sum((datos\(P20A == 1) * datos\)factor_ponderacion) / sum(datos$factor_ponderacion)) * 100
tabla_comunas <- datos %>% group_by(comuna) %>% summarise( Indice_Victimizacion = (sum((P20A == 1) * factor_ponderacion) / sum(factor_ponderacion)) * 100 ) %>% arrange(desc(Indice_Victimizacion))
kable(tabla_comunas, digits = 2, caption = “Índice de Victimización desagregado por Comunas.”)
comuna_max <- tabla_comunas\(comuna[1] comuna_min <- tabla_comunas\)comuna[nrow(tabla_comunas)]