Taller de R

install.packages(c(“tidyverse”, “knitr”, “summarytools”))

library(tidyverse) library(knitr) library(summarytools)

Directorio base de datos

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)

Resumen de género

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.”)

Gráfico 1 Distribución por Estrato Socioeconómico

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.”)

Como se observa en la Tabla 1 y el Gráfico 1, la población se concentra mayoritariamente en los estratos 2 y 3. Existe una distribución equitativa en términos de género entre los jefes de hogar encuestados.

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)]