1 Introducción

En este informe desarrollo un análisis integral sobre las condiciones socioeconómicas, la victimización objetiva y la percepción de seguridad ciudadana en la ciudad Castellana, a partir del procesamiento estadístico de las bases del taller.

Para esto, integro dos fuentes muestrales estructuradas (BD1 y BD2) vinculadas a nivel de microdatos mediante la llave única de hogar REGISTRO. Lo que quiero hacer con el taller, no es solo calcular frecuencias descriptivas, sino responder a tres interrogantes fundamentales de política pública urbana tambien:

  1. Perfil sociodemográfico del informante: Caracterizar la composición de los hogares según jefatura, distribución etaria y estratificación social.

  2. Gradiente espacial de la seguridad y brechas sociodemográficas: Contrastar cómo varía la percepción de seguridad conforme nos alejamos del entorno micro (el barrio) hacia el nivel meso (la comuna) y macro (la ciudad), evaluando si existen sesgos sistemáticos atribuibles al género o a la posición socioeconómica.

  3. Victimización objetiva ponderada: Implementar la formulación matemática del índice de victimización incorporando el factor de expansión muestral, identificando los focos territoriales de mayor y menor incidencia delictiva.

Adicionalmente, para ir un poco mas alla del taller, me gustaria evaluar la paradoja de la seguridad urbana: contrastar si aquellas comunas con mayores tasas objetivas de victimización coinciden o divergen de aquellas donde los ciudadanos manifiestan mayor temor en el espacio público.

Finalmente el análisis se desarrolla íntegramente en R y está diseñado para compilar tanto a HTML como a PDF. Las tablas y figuras se presentan con numeración, título, fuente y una interpretación en el texto.

2 Lista de tablas y figuras

Tablas del informe

  • Tabla 1. Distribución de informantes según grupos de edad y sexo
  • Tabla 2. Distribución socioeconómica de los hogares por estrato y jefatura
  • Tabla 3. Condición de actividad económica del jefe de hogar
  • Tabla 4. Percepción de seguridad según escalas territoriales (Barrio, Comuna, Ciudad)
  • Tabla 5. Percepción de inseguridad según género del informante
  • Tabla 6. Percepción de inseguridad según estrato socioeconómico
  • Tabla 7. Hechos delictivos reportados según modalidad (P20A)
  • Tabla 8. Principales razones para no denunciar formalmente (P30)
  • Tabla 9. Índice de victimización delictiva ponderado por comunas (factor de expansión)

Figuras del informe

  • Figura 1. Estructura demográfica de la muestra encuestada
  • Figura 2. Composición de la jefatura de hogar según estrato
  • Figura 3. Distribución porcentual de las ocupaciones laborales
  • Figura 4. Gradiente territorial de inseguridad urbana
  • Figura 5. Brecha de género en la percepción de temor
  • Figura 6. Comparativo entre victimización real e inseguridad subjetiva
  • Figura 7. Embudo procesal del delito de hurto y atrición de denuncia
  • Figura 8. Heterogeneidad territorial de la victimización ponderada por comuna
  • Figura 9. Cuadrantes de discrepancia: victimización real vs. percepción de inseguridad

3 Preparación de los datos

3.1 Carga de las bases y del diccionario

El archivo bases_diccionario.zip contiene BD1.xlsx, BD2.xlsx y DICCIONARIO_DATOS.xlsx. El siguiente bloque permite trabajar tanto si los archivos ya fueron extraídos como si solamente se encuentra disponible el archivo comprimido.

setwd("C:/Users/s12e10/Downloads/EJERCICIO")

bd1 <- read_excel("BD1.xlsx")
bd2 <- read_excel("BD2.xlsx")
dic_info <- read_excel("DICCIONARIO_DATOS.xlsx", sheet = "información_variables")
dic_valores <- read_excel("DICCIONARIO_DATOS.xlsx", sheet = "valores_variables")

# Verificamos que REGISTRO sea una llave única antes de unir las bases.
if (anyDuplicated(bd1$REGISTRO) > 0 || anyDuplicated(bd2$REGISTRO) > 0) {
  stop("REGISTRO no es único en alguna de las bases. Revise la llave antes de hacer el merge.")
}

base <- inner_join(bd1, bd2, by = "REGISTRO")

3.2 Recodificación de variables

De acuerdo con el diccionario, vamos a recodificar las variables principales para trabajar con etiquetas comprensibles en las tablas y gráficos que se presentan a lo largo del estudio.

base <- base %>%
  mutate(
    Genero = factor(GENERO,
                    levels = c(1, 2),
                    labels = c("Masculino", "Femenino")),
    RangoEdad = factor(EDAD_RANGO,
                       levels = 1:10,
                       labels = c("16-17", "18-24", "25-28", "29-34", "35-38",
                                  "39-44", "45-54", "55-59", "60-66", "67 o más")),
    Estrato = factor(ESTRATO_DEC,
                     levels = c(1, 2, 3, 4, 5, 6, 7),
                     labels = c("Estrato 1", "Estrato 2", "Estrato 3", "Estrato 4",
                                "Estrato 5", "Estrato 6", "Sin estrato")),
    Ocupacion = factor(PD,
                       levels = c(1, 2, 3, 4, 5, 6, 10, 11, 77, 88, 99, 996),
                       labels = c("Empleado/asalariado",
                                  "Trabaja independiente/propietario",
                                  "Retirado/Jubilado",
                                  "Desempleado",
                                  "Ama de casa",
                                  "Estudiante",
                                  "Incapacitado/discapacitado",
                                  "Cuidado de familiares",
                                  "Otros(as)",
                                  "Ninguno/nada",
                                  "No responde",
                                  "Otro ¿Cuál?")),
    P1_lab = factor(P1, levels = 1:4,
                    labels = c("Muy seguro", "Seguro", "Inseguro", "Muy inseguro")),
    P3_lab = factor(P3, levels = 1:4,
                    labels = c("Muy seguro", "Seguro", "Inseguro", "Muy inseguro")),
    P5_lab = factor(P5, levels = 1:4,
                    labels = c("Muy seguro", "Seguro", "Inseguro", "Muy inseguro")),
    P2_lab = factor(P2, levels = c(1, 2, 3, 999),
                    labels = c("Más seguro", "Menos seguro", "Igual", "NS/NR")),
    P4_lab = factor(P4, levels = c(1, 2, 3, 999),
                    labels = c("Más seguro", "Menos seguro", "Igual", "NS/NR")),
    P6_lab = factor(P6, levels = c(1, 2, 3, 999),
                    labels = c("Más seguro", "Menos seguro", "Igual", "NS/NR"))
  )

4 Resumen ejecutivo de indicadores de ciudad

Muestra Analizada
4.680
Jefes de hogar encuestados
Victimización Ponderada
20,0%
291.139 hogares expandidos
Inseguridad en Ciudad
52,5%
Gradiente macro de percepción
Cifra Negra Estimada
61,1%
Delitos sin denuncia formal

5 Caracterización socioeconómica de la población encuestada

En esta sección voy a analizar el perfil social y económico de las personas que respondieron la encuesta en la ciudad Castellana. Para tener una foto completa de quiénes son los jefes de hogar, reviso tres dimensiones fundamentales: la estructura por género, la composición etaria (edades) y la estratificación socioeconómica del territorio.

5.1 Composición por género y edad de los jefes de hogar

Primero examino la composición demográfica básica de las personas encuestadas. Como paso metodológico previo, depuré los códigos de no respuesta (valores atípicos como 999) para conservar únicamente observaciones biológicamente consistentes.

col_edad <- if("PC_EDAD" %in% names(base)) "PC_EDAD" else "PC"

base <- base %>%
  mutate(
    edad_raw = as.numeric(.data[[col_edad]]),
    edad_num = if_else(edad_raw >= 15 & edad_raw < 110, edad_raw, NA_real_),
    genero_label = case_when(
      GENERO %in% c(1, "1", "Hombre", "Masculino") ~ "Hombre",
      GENERO %in% c(2, "2", "Mujer", "Femenino") ~ "Mujer",
      TRUE ~ as.character(GENERO)
    ),
    rango_edad = case_when(
      edad_num < 25 ~ "15 a 24 años",
      edad_num >= 25 & edad_num < 40 ~ "25 a 39 años",
      edad_num >= 40 & edad_num < 60 ~ "40 a 59 años",
      edad_num >= 60 ~ "60 años o más",
      TRUE ~ "Sin dato"
    )
  )

tabla_edad <- base %>%
  filter(!is.na(edad_num)) %>%
  group_by(genero_label) %>%
  summarise(
    `Total Encuestados` = n(),
    `Participación (%)` = (n() / nrow(base %>% filter(!is.na(edad_num)))) * 100,
    `Edad Promedio` = mean(edad_num, na.rm = TRUE),
    `Mediana` = median(edad_num, na.rm = TRUE),
    `Desviación Estándar` = sd(edad_num, na.rm = TRUE),
    `Edad Mínima` = min(edad_num, na.rm = TRUE),
    `Edad Máxima` = max(edad_num, na.rm = TRUE)
  )

tabla_dual(tabla_edad, "Tabla 1. Estadísticas descriptivas de la edad según género del informante", digitos = 1)
Tabla 1. Estadísticas descriptivas de la edad según género del informante
genero_label Total Encuestados Participación (%) Edad Promedio Mediana Desviación Estándar Edad Mínima Edad Máxima
Hombre 2289 49.1 44.8 44 19.0 15 92
Mujer 2376 50.9 48.2 50 18.2 16 98
base %>%
  filter(!is.na(edad_num), rango_edad != "Sin dato") %>%
  count(rango_edad, genero_label) %>%
  group_by(rango_edad) %>%
  mutate(pct = round(n / sum(n) * 100, 1)) %>%
  ggplot(aes(x = rango_edad, y = n, fill = genero_label)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.85), width = 0.7) +
  geom_text(
    aes(label = paste0(n, "\n(", pct, "%)")), 
    position = position_dodge(width = 0.85), 
    vjust = -0.3, 
    size = 2.7,
    lineheight = 0.85
  ) +
  scale_y_continuous(limits = c(0, 950), breaks = seq(0, 900, 200)) +
  scale_fill_manual(values = c("Hombre" = "#2b5c8f", "Mujer" = "#d95f02")) +
  labs(
    title = "Figura 1. Distribución de los jefes de hogar por grupos de edad y género",
    subtitle = "Frecuencia absoluta y participación porcentual por cohorte etaria",
    x = "Grupo de Edad",
    y = "Número de Encuestados",
    fill = "Género"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 8),
    plot.subtitle = element_text(size = 7, color = "gray30"),
    axis.text.x = element_text(size = 7),
    legend.position = "bottom"
  )
Figura 1. Distribución de los jefes de hogar por grupos de edad y género

Figura 1. Distribución de los jefes de hogar por grupos de edad y género

Análisis e interpretación de los resultados:

A partir de los resultados consolidados en la Tabla 1, observo un equilibrio demográfico casi exacto en la representatividad general de la muestra: de los 4.665 informantes válidos, 2.376 son mujeres (50,9%) y 2.289 son hombres (49,1%). No obstante, al comparar las medidas descriptivas encuentro diferencias relevantes:

  • Las mujeres registran una edad promedio de 48,2 años frente a 44,8 años en los hombres. Esta distancia se confirma en la mediana (50 años en mujeres versus 44 años en hombres), lo que demuestra que la jefatura femenina en los hogares encuestados está concentrada en una etapa de mayor madurez.

  • La desviación estándar (18,2 años en mujeres y 19,0 años en hombres) refleja una notable dispersión en las respuestas, abarcando desde jóvenes de 15 y 16 años hasta adultos mayores de más de 90 años.

Por su parte, al examinar la Figura 1, identifico un cambio generacional marcado en la jefatura del hogar según el sexo:

  • En las etapas tempranas predomina la jefatura masculina: en el rango de 15 a 24 años los hombres representan el 59,6% (445 encuestados frente a 302 mujeres), y entre los 25 y 39 años alcanzan el 51,6% (579 frente a 544).

  • A partir de los 40 años esta relación se invierte: en el grupo de 40 a 59 años las mujeres pasan a ser mayoría con el 55,6% (785 hogares), y en el grupo de 60 años o más representan el 53,9% (745 hogares).

Este contraste resulta clave para el resto del estudio: las respuestas sobre la convivencia y los problemas de la ciudad recaen sobre dos poblaciones principales: hombres jóvenes o adultos tempranos, y mujeres adultas y de la tercera edad, dos grupos que suelen relacionarse y percibir los riesgos del entorno urbano de formas muy distintas.

5.2 Distribución socioeconómica por estratos

En este apartado examino la distribución socioeconómica de los hogares encuestados mediante la variable ESTRATO_DEC, identificando los estratos tradicionales del 1 al 6 y clasificando la categoría 7 como “Sin estrato / No aplica”.

base <- base %>%
  mutate(
    estrato_cat = case_when(
      ESTRATO_DEC == 1 ~ "Estrato 1",
      ESTRATO_DEC == 2 ~ "Estrato 2",
      ESTRATO_DEC == 3 ~ "Estrato 3",
      ESTRATO_DEC == 4 ~ "Estrato 4",
      ESTRATO_DEC == 5 ~ "Estrato 5",
      ESTRATO_DEC == 6 ~ "Estrato 6",
      ESTRATO_DEC == 7 ~ "Sin estrato",
      TRUE ~ "Sin dato"
    ),
    estrato_cat = factor(estrato_cat, levels = c(paste("Estrato", 1:6), "Sin estrato"))
  )

# Tabla 2: Distribución descriptiva
tabla_estrato <- base %>%
  filter(estrato_cat != "Sin dato") %>%
  group_by(estrato_cat) %>%
  summarise(
    `Hogares` = n(),
    `Participación (%)` = (n() / nrow(base)) * 100,
    `Hombres (%)` = mean(genero_label == "Hombre", na.rm = TRUE) * 100,
    `Mujeres (%)` = mean(genero_label == "Mujer", na.rm = TRUE) * 100
  )

tabla_dual(tabla_estrato, "Tabla 2. Distribución de los hogares encuestados por estrato socioeconómico y composición de género", digitos = 1)
Tabla 2. Distribución de los hogares encuestados por estrato socioeconómico y composición de género
estrato_cat Hogares Participación (%) Hombres (%) Mujeres (%)
Estrato 1 753 16.1 46.3 53.7
Estrato 2 2026 43.4 48.1 51.9
Estrato 3 1282 27.4 50.2 49.8
Estrato 4 141 3.0 51.8 48.2
Estrato 5 82 1.8 58.5 41.5
Estrato 6 3 0.1 33.3 66.7
Sin estrato 386 8.3 51.8 48.2

Para visualizar la concentración en la estructura socioeconómica de la ciudad, elaboré el gráfico comparativo de la Figura 2:

# Usamos directamente la columna estrato_cat que ya existe en la base
df_estrato_plot <- base %>%
  filter(!is.na(estrato_cat), !is.na(genero_label)) %>%
  count(estrato_cat, genero_label) %>%
  group_by(estrato_cat) %>%
  mutate(pct = round(n / sum(n) * 100, 1))

ggplot(df_estrato_plot, aes(x = factor(estrato_cat), y = n, fill = genero_label)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.85), width = 0.7) +
  geom_text(
    aes(label = paste0(n, "\n(", pct, "%)")),
    position = position_dodge(width = 0.85),
    vjust = -0.2,
    size = 2.1,
    lineheight = 0.8
  ) +
  scale_y_continuous(limits = c(0, 1300), breaks = seq(0, 1200, 300)) +
  scale_fill_manual(values = c("Hombre" = "#2b5c8f", "Mujer" = "#d95f02")) +
  labs(
    title = "Figura 2. Distribución de informantes por estrato socioeconómico y género",
    subtitle = "Frecuencia de hogares y proporción de género al interior de cada estrato",
    x = "Estrato Socioeconómico",
    y = "Número de Jefes de Hogar",
    fill = "Género"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 8),
    plot.subtitle = element_text(size = 7, color = "gray30"),
    axis.text.x = element_text(size = 7.5, angle = 20, hjust = 1),
    axis.text.y = element_text(size = 7.5),
    axis.title = element_text(size = 8),
    legend.title = element_text(size = 8),
    legend.text = element_text(size = 7),
    legend.position = "bottom"
  )
Figura 2. Distribución de informantes por estrato socioeconómico y género

Figura 2. Distribución de informantes por estrato socioeconómico y género

Análisis e interpretación de los resultados:

Al revisar los datos consolidados en la Tabla 2 y la Figura 2, encuentro una marcada concentración socioeconómica en los sectores populares y de clase media-baja en la ciudad Castellana:

  • El Estrato 2 es el grupo mayoritario con 2.026 hogares, lo que representa el 43,4% del total de la muestra. Le sigue el Estrato 3 con 1.282 hogares (27,4%) y el Estrato 1 con 753 hogares (16,1%). Entre estos tres primeros estratos agrupan al 86,9% de todas las viviendas encuestadas.

  • Por el contrario, los estratos socioeconómicos altos tienen una representación muy baja en la base: el Estrato 4 cuenta con 141 hogares (3,0%), el Estrato 5 con 82 hogares (1,8%) y el Estrato 6 apenas registra 3 encuestas (0,1%). Asimismo, 386 hogares (8,3%) reportaron no contar con estratificación o no saberla.

  • En cuanto a la distribución por sexo al interior de cada estrato, la muestra guarda un equilibrio notable en los segmentos principales: en el Estrato 2 las mujeres representan el 51,9% (1.051 hogares) frente al 48,1% de hombres (975 hogares); y en el Estrato 3 la relación es prácticamente de paridad con 50,2% hombres (644 casos) y 49,8% mujeres (638 casos). En el Estrato 1 la jefatura femenina alcanza el 53,7% (404 casos).

Esto me demuestra que el estudio refleja la realidad de una ciudad predominantemente de estratos 2 y 3. Por lo tanto, cuando evalúe la seguridad y la victimización en las siguientes secciones, los resultados describirán principalmente la experiencia urbana de estos niveles socioeconómicos.

5.3 Condición de ocupación laboral de los jefes de hogar

Para completar la caracterización económica de la población encuestada, analizo la actividad laboral de los jefes de hogar. Esta dimensión me permite comprender las fuentes de sustento económico y el arraigo o permanencia física que tienen las personas en sus barrios durante el día.

# Tabla de distribución por condición de ocupación
tabla_ocupacion <- base %>%
  count(Ocupacion) %>%
  filter(!is.na(Ocupacion), n > 0) %>%
  mutate(
    `Participación (%)` = round((n / sum(n)) * 100, 1)
  ) %>%
  arrange(desc(n)) %>%
  rename(
    `Condición de Ocupación` = Ocupacion,
    `Hogares` = n
  )

tabla_dual(tabla_ocupacion, "Tabla 3. Distribución de los jefes de hogar según condición de ocupación laboral", digitos = 1)
Tabla 3. Distribución de los jefes de hogar según condición de ocupación laboral
Condición de Ocupación Hogares Participación (%)
Ama de casa 1343 28.7
Empleado/asalariado 1123 24.0
Trabaja independiente/propietario 1001 21.4
Desempleado 427 9.1
Retirado/Jubilado 360 7.7
Estudiante 304 6.5
Ninguno/nada 88 1.9
Incapacitado/discapacitado 16 0.3
Cuidado de familiares 6 0.1
Otros(as) 4 0.1
No responde 1 0.0

En la Figura 3 represento de forma ordenada las actividades laborales de los informantes para identificar visualmente los perfiles predominantes:

ggplot(tabla_ocupacion %>% filter(Hogares >= 10), 
       aes(x = reorder(`Condición de Ocupación`, Hogares), y = Hogares)) +
  geom_bar(stat = "identity", fill = "#2b5c8f", width = 0.65) +
  geom_text(
    aes(label = paste0(Hogares, " (", `Participación (%)`, "%)")),
    hjust = -0.1,
    size = 2.4
  ) +
  coord_flip() +
  scale_y_continuous(limits = c(0, 1600), breaks = seq(0, 1500, 300)) +
  labs(
    title = "Figura 3. Condición de ocupación laboral de los jefes de hogar",
    subtitle = "Frecuencia de informantes y porcentaje sobre el total de la muestra",
    x = "Condición de Ocupación",
    y = "Número de Jefes de Hogar"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 6),
    plot.subtitle = element_text(size = 5, color = "gray30"),
    axis.text.x = element_text(size = 7.5),
    axis.text.y = element_text(size = 7.5),
    axis.title = element_text(size = 8)
  )
Figura 3. Condición de ocupación laboral de los jefes de hogar

Figura 3. Condición de ocupación laboral de los jefes de hogar

Análisis e interpretación de los resultados:

Al examinar la Tabla 3 y la Figura 3, observo que la fuerza laboral y las actividades cotidianas de los jefes de hogar se concentran en tres categorías principales que representan el 74,1% de toda la muestra:

  • Ama de casa: Constituye el grupo mayoritario con 1.343 personas (el 28,7% del total). Esta cifra guarda coherencia directa con lo hallado en la Tabla 1, donde identifiqué una fuerte presencia de mujeres mayores de 40 años en la jefatura del hogar. Este segmento tiene una permanencia diurna constante en el barrio, por lo que sus respuestas reflejan de primera mano la dinámica del vecindario.

  • Fuerza laboral activa: Los Empleados o asalariados suman 1.123 casos (24,0%), mientras que quienes trabajan como Independientes o propietarios alcanzan 1.001 hogares (21,4%). Esto indica que casi la mitad de los informantes (45,4%) se moviliza diariamente para generar ingresos, expuestos tanto a los trayectos urbanos como a la actividad comercial.

  • Población no activa u ocupaciones menores: Encuentro que 427 personas se encuentran en condición de Desempleo (9,1%), seguidos por Retirados o jubilados con 360 casos (7,7%) y Estudiantes con 304 casos (6,5%). Opciones como personas sin ocupación específica (88 casos, 1,9%), incapacidad médica (16 casos, 0,3%) o cuidado exclusivo de familiares (6 casos, 0,1%) completan los valores residuales.

En conjunto con la edad madura y la localización en estratos 2 y 3 vista en los apartados anteriores, confirmo que la muestra está compuesta principalmente por personas con responsabilidades directas en el hogar y en la economía familiar. Esto le otorga solidez a los juicios que emiten sobre la seguridad y el delito en los siguientes puntos.


6 Percepción de seguridad en barrio, comuna y ciudad

En este apartado analizo la dimensión subjetiva de la seguridad ciudadana a partir de las preguntas P1 (barrio), P3 (comuna) y P5 (ciudad). Evalúo cómo cambia el sentimiento de protección a medida que se amplía la escala territorial y si existen brechas atribuibles al género del informante o al estrato socioeconómico de la vivienda.

6.1 El gradiente territorial: ¿Cómo cambia el sentimiento de seguridad según la escala espacial?

Para contrastar las tres escalas territoriales en una misma métrica homogénea, recodifiqué las opciones de respuesta en cuatro niveles de seguridad (Muy seguro, Seguro, Inseguro, Muy inseguro).

# Recodificación de las variables P1, P3 y P5
recode_seguridad <- function(x) {
  case_when(
    x == 1 ~ "Muy seguro",
    x == 2 ~ "Seguro",
    x == 3 ~ "Inseguro",
    x == 4 ~ "Muy inseguro",
    TRUE ~ NA_character_
  )
}

base <- base %>%
  mutate(
    sec_barrio = factor(recode_seguridad(P1), levels = c("Muy seguro", "Seguro", "Inseguro", "Muy inseguro")),
    sec_comuna = factor(recode_seguridad(P3), levels = c("Muy seguro", "Seguro", "Inseguro", "Muy inseguro")),
    sec_ciudad = factor(recode_seguridad(P5), levels = c("Muy seguro", "Seguro", "Inseguro", "Muy inseguro"))
  )

# Consolidación comparativa en tabla
resumen_escalas <- tibble(
  `Escala Territorial` = c("Barrio (P1)", "Comuna (P3)", "Ciudad (P5)"),
  `Muy seguro (%)` = c(
    mean(base$sec_barrio == "Muy seguro", na.rm = TRUE) * 100,
    mean(base$sec_comuna == "Muy seguro", na.rm = TRUE) * 100,
    mean(base$sec_ciudad == "Muy seguro", na.rm = TRUE) * 100
  ),
  `Seguro (%)` = c(
    mean(base$sec_barrio == "Seguro", na.rm = TRUE) * 100,
    mean(base$sec_comuna == "Seguro", na.rm = TRUE) * 100,
    mean(base$sec_ciudad == "Seguro", na.rm = TRUE) * 100
  ),
  `Inseguro (%)` = c(
    mean(base$sec_barrio == "Inseguro", na.rm = TRUE) * 100,
    mean(base$sec_comuna == "Inseguro", na.rm = TRUE) * 100,
    mean(base$sec_ciudad == "Inseguro", na.rm = TRUE) * 100
  ),
  `Muy inseguro (%)` = c(
    mean(base$sec_barrio == "Muy inseguro", na.rm = TRUE) * 100,
    mean(base$sec_comuna == "Muy inseguro", na.rm = TRUE) * 100,
    mean(base$sec_ciudad == "Muy inseguro", na.rm = TRUE) * 100
  ),
  `Total Percepción Insegura (%)` = `Inseguro (%)` + `Muy inseguro (%)`
)

tabla_dual(resumen_escalas, "Tabla 4. Comparativo de percepción de seguridad según escala territorial (Barrio, Comuna y Ciudad)", digitos = 1)
Tabla 4. Comparativo de percepción de seguridad según escala territorial (Barrio, Comuna y Ciudad)
Escala Territorial Muy seguro (%) Seguro (%) Inseguro (%) Muy inseguro (%) Total Percepción Insegura (%)
Barrio (P1) 10.4 73.3 13.7 2.6 16.3
Comuna (P3) 7.4 72.0 16.5 4.1 20.6
Ciudad (P5) 4.1 43.4 41.2 11.3 52.5

Para visualizar este gradiente espacial, construí el gráfico de barras apiladas de la Figura 4:

# Paleta semafórica ordenada: Seguro a Inseguro
colores_percepcion <- c(
  "Muy seguro"   = "#2ca25f",
  "Seguro"       = "#99d8c9",
  "Inseguro"     = "#fdae61",
  "Muy inseguro" = "#d7191c"
)

df_gradiente <- base %>%
  select(sec_barrio, sec_comuna, sec_ciudad) %>%
  pivot_longer(cols = everything(), names_to = "Escala", values_to = "Percepcion") %>%
  filter(!is.na(Percepcion)) %>%
  mutate(
    Escala = case_when(
      Escala == "sec_barrio" ~ "Barrio",
      Escala == "sec_comuna" ~ "Comuna",
      Escala == "sec_ciudad" ~ "Ciudad"
    ),
    Escala = factor(Escala, levels = c("Barrio", "Comuna", "Ciudad")),
    # Fijamos el orden de apilamiento para que lo positivo quede abajo y lo negativo arriba
    Percepcion = factor(Percepcion, levels = c("Muy seguro", "Seguro", "Inseguro", "Muy inseguro"))
  ) %>%
  count(Escala, Percepcion) %>%
  group_by(Escala) %>%
  mutate(pct = round(n / sum(n) * 100, 1))

ggplot(df_gradiente, aes(x = Escala, y = pct, fill = Percepcion)) +
  geom_bar(stat = "identity", position = "stack", width = 0.55) +
  geom_text(
    aes(label = paste0(pct, "%")),
    position = position_stack(vjust = 0.5),
    size = 2.4,
    color = "black"
  ) +
  scale_fill_manual(values = colores_percepcion) +
  labs(
    title = "Figura 4. Gradiente territorial de la percepción de seguridad",
    subtitle = "Distribución porcentual del sentimiento de seguridad en barrio, comuna y ciudad",
    x = "Nivel Territorial",
    y = "Porcentaje de Encuestados (%)",
    fill = "Percepción"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 8),
    plot.subtitle = element_text(size = 7, color = "gray30"),
    axis.text = element_text(size = 7.5),
    axis.title = element_text(size = 8),
    legend.title = element_text(size = 8),
    legend.text = element_text(size = 7),
    legend.position = "bottom"
  )
Figura 4. Gradiente territorial de la percepción de seguridad

Figura 4. Gradiente territorial de la percepción de seguridad

Análisis e interpretación de los resultados:

Al analizar los datos consolidados en la Tabla 4 y representados en la Figura 4, encuentro una pauta territorial evidente: la sensación de inseguridad no es homogénea en el espacio, sino que aumenta a medida que el informante se aleja de su espacio inmediato de residencia:

  • Seguridad en el Barrio: El entorno residencial más cercano es percibido de forma ampliamente positiva. Un 83,7% de los encuestados reporta sentirse protegido (10,4% “Muy seguro” y 73,3% “Seguro”), mientras que solo un 16,3% manifiesta sentirse vulnerable (13,7% “Inseguro” y 2,6% “Muy inseguro”). Esto refleja un efecto de cercanía y familiaridad vecinal que mitiga el temor al delito cotidiano.

  • Seguridad en la Comuna: Al ampliar la mirada hacia la comuna o corregimiento, la percepción favorable disminuye ligeramente a 79,4% (7,4% “Muy seguro” y 72,0% “Seguro”), mientras que la tasa de inseguridad sube al 20,6% (16,5% “Inseguro” y 4,1% “Muy inseguro”). Aunque sigue predominando la tranquilidad, el traslado por áreas menos conocidas de la misma zona genera una mayor prevención en los hogares.

  • **Seguridad en la Ciudad: La ruptura más drástica se presenta en la escala global de la ciudad. Aquí la sensación de inseguridad se dispara hasta el 52,5% (41,2% “Inseguro” y 11,3% “Muy inseguro”), multiplicando por más de tres veces el nivel registrado en los barrios. Solo un 4,1% se siente “Muy seguro” en la urbe.

Esta diferencia de más de 36 puntos porcentuales entre la inseguridad del barrio (16,3%) y la de la ciudad (52,5%) muestra con claridad lo que en criminología urbana se conoce como el efecto del espacio abstracto: los ciudadanos confían en lo que ven y conocen día a día en su cuadra, pero proyectan altos niveles de alarma frente al resto del territorio urbano, influenciados por los medios de comunicación y el anonimato de la ciudad.


6.2 Diferencias en la percepción de seguridad según género y estrato socioeconómico

Para profundizar en los determinantes de la percepción subjetiva, analizo la tasa de inseguridad global (suma de respuestas Inseguro y Muy inseguro) contrastando dos dimensiones fundamentales: las diferencias entre hombres y mujeres, y la posición en la pirámide socioeconómica por estratos residenciales.

# 1. Brecha territorial por Género
brecha_genero <- base %>%
  filter(!is.na(genero_label)) %>%
  group_by(`Género` = genero_label) %>%
  summarise(
    `Inseguridad Barrio (%)` = mean(sec_barrio %in% c("Inseguro", "Muy inseguro"), na.rm = TRUE) * 100,
    `Inseguridad Comuna (%)` = mean(sec_comuna %in% c("Inseguro", "Muy inseguro"), na.rm = TRUE) * 100,
    `Inseguridad Ciudad (%)` = mean(sec_ciudad %in% c("Inseguro", "Muy inseguro"), na.rm = TRUE) * 100
  )

tabla_dual(brecha_genero, "Tabla 5. Percepción de inseguridad según género del informante a escala territorial", digitos = 1)
Tabla 5. Percepción de inseguridad según género del informante a escala territorial
Género Inseguridad Barrio (%) Inseguridad Comuna (%) Inseguridad Ciudad (%)
Hombre 14.3 19.6 48.0
Mujer 18.3 21.6 56.7

En la Figura 5 represento gráficamente la brecha sistemática entre hombres y mujeres a lo largo de los tres niveles espaciales:

df_brecha_plot <- brecha_genero %>%
  pivot_longer(cols = starts_with("Inseguridad"), names_to = "Territorio", values_to = "Tasa_Inseguridad") %>%
  mutate(
    Territorio = case_when(
      str_detect(Territorio, "Barrio") ~ "Barrio",
      str_detect(Territorio, "Comuna") ~ "Comuna",
      str_detect(Territorio, "Ciudad") ~ "Ciudad"
    ),
    Territorio = factor(Territorio, levels = c("Barrio", "Comuna", "Ciudad"))
  )

ggplot(df_brecha_plot, aes(x = Territorio, y = Tasa_Inseguridad, fill = `Género`)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.8), width = 0.65) +
  geom_text(
    aes(label = paste0(round(Tasa_Inseguridad, 1), "%")),
    position = position_dodge(width = 0.8),
    vjust = -0.3,
    size = 2.4
  ) +
  scale_y_continuous(limits = c(0, 75), breaks = seq(0, 70, 15)) +
  scale_fill_manual(values = c("Hombre" = "#2b5c8f", "Mujer" = "#d95f02")) +
  labs(
    title = "Figura 5. Percepción de inseguridad territorial según género del informante",
    subtitle = "Porcentaje de personas que se sienten Inseguras o Muy inseguras",
    x = "Escala Territorial",
    y = "Tasa de Inseguridad (%)",
    fill = "Género"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 8),
    plot.subtitle = element_text(size = 7, color = "gray30"),
    axis.text = element_text(size = 7.5),
    axis.title = element_text(size = 8),
    legend.title = element_text(size = 8),
    legend.text = element_text(size = 7),
    legend.position = "bottom"
  )
Figura 5. Percepción de inseguridad territorial según género del informante

Figura 5. Percepción de inseguridad territorial según género del informante

Por otro lado, examino en la Tabla 6 cómo varía la percepción de riesgo según el estrato socioeconómico de la vivienda:

# 2. Brecha por Estrato en el Barrio y en la Ciudad
tabla_estrato_seg <- base %>%
  filter(!is.na(estrato_cat), estrato_cat != "Sin estrato") %>%
  group_by(`Estrato` = estrato_cat) %>%
  summarise(
    `Inseguridad Barrio (%)` = mean(sec_barrio %in% c("Inseguro", "Muy inseguro"), na.rm = TRUE) * 100,
    `Inseguridad Ciudad (%)` = mean(sec_ciudad %in% c("Inseguro", "Muy inseguro"), na.rm = TRUE) * 100
  )

tabla_dual(tabla_estrato_seg, "Tabla 6. Percepción de inseguridad en el barrio y en la ciudad según estrato socioeconómico", digitos = 1)
Tabla 6. Percepción de inseguridad en el barrio y en la ciudad según estrato socioeconómico
Estrato Inseguridad Barrio (%) Inseguridad Ciudad (%)
Estrato 1 14.6 47.7
Estrato 2 13.9 51.4
Estrato 3 21.0 58.7
Estrato 4 24.1 60.3
Estrato 5 30.5 61.0
Estrato 6 0.0 33.3

Análisis e interpretación de los resultados:

Al revisar la Tabla 5, la Figura 5 y la Tabla 6, encuentro dos patrones sobre cómo perciben el riesgo los habitantes de la ciudad:

  • Brecha de género en todas las escalas territoriales: Las mujeres sienten mayor inseguridad que los hombres en cualquier nivel geográfico evaluado. En el entorno cercano del barrio, el 18,3% de las mujeres manifiesta sentirse insegura frente al 14,3% de los hombres (una diferencia de 4,0 puntos porcentuales). En la comuna esta cifra sube a 21,6% en mujeres y 19,6% en hombres. La distancia más amplia se observa a nivel de toda la ciudad, donde el temor alcanza al 56,7% de las mujeres en comparación con el 48,0% de los hombres (8,7 puntos porcentuales más). Esto evidencia que transitar y habitar los espacios públicos genera una mayor sensación de vulnerabilidad en la población femenina.

  • La paradoja del estrato socioeconómico: Al examinar la Tabla 6, resalta un comportamiento ascendente: el temor aumenta conforme sube el estrato. En los estratos 1 y 2, la inseguridad en el barrio se mantiene baja, con 14,6% y 13,9%, respectivamente. Sin embargo, en el estrato 3 sube a 21,0%, en el estrato 4 llega a 24,1% y en el estrato 5 alcanza el 30,5%, duplicando el nivel de temor de los sectores populares (el estrato 6 marca 0,0% debido a que solo cuenta con 3 registros muestrales). Lo mismo ocurre al evaluar la ciudad completa: en el estrato 1 la inseguridad es del 47,7%, mientras que en los estratos 4 y 5 supera el 60% (60,3% y 61,0%).

Estos datos revelan que vivir en zonas de mayores ingresos o con cerramientos residenciales no reduce el miedo al delito, sino que coincide con una mayor percepción de riesgo. Este hallazgo servirá de contraste en la siguiente sección, donde revisaremos si la victimización real sigue este mismo patrón o si se comporta de manera inversa.

7 Medición y caracterización de la victimización delictiva

En esta sección analizo la dimensión objetiva de la seguridad mediante el examen de los hechos delictivos sufridos directamente por los informantes (P20A), el desglose de las modalidades de hurto y el comportamiento de la denuncia institucional (P26, P30). Asimismo, pongo a prueba la hipótesis de la seguridad contrastando el riesgo real frente al temor percibido.

7.1 Prevalencia delictiva y contraste frente al temor subjetivo

A partir de la variable P20A, identifico que 948 personas sufrieron al menos un hecho delictivo en el último año, lo que representa una tasa global de victimización del 20,2% sobre el total de la muestra (4.680 casos válidos). El restante 79,8% (3.732 hogares) declaró no haber sido objeto de delitos.

# Recodificación de modalidades según diccionario de variables
base <- base %>%
  mutate(
    tipo_delito = case_when(
      P20A == 1 ~ "Hurto a personas",
      P20A == 2 ~ "Hurto a residencias",
      P20A == 3 ~ "Hurto al comercio",
      P20A == 4 ~ "Hurto de vehículos/partes",
      P20A == 5 ~ "Homicidio",
      P20A == 6 ~ "Extorsión/vacunas",
      P20A == 7 ~ "Lesiones personales",
      P20A == 8 ~ "Vandalismo",
      P20A == 9 ~ "Explosión petardos/granadas",
      P20A == 10 ~ "Ninguno",
      TRUE ~ NA_character_
    ),
    es_victima = ifelse(P20A %in% 1:9, "Sí fue víctima", ifelse(P20A == 10, "No fue víctima", NA_character_)),
    victima_num = ifelse(P20A %in% 1:9, 1, ifelse(P20A == 10, 0, NA_real_))
  )

# Tabla 7. Desglose de delitos sufridos
tabla_modalidades <- base %>%
  filter(!is.na(tipo_delito), tipo_delito != "Ninguno") %>%
  count(tipo_delito) %>%
  mutate(
    `Participación (%)` = round((n / sum(n)) * 100, 1)
  ) %>%
  arrange(desc(n)) %>%
  rename(`Modalidad Delictiva` = tipo_delito, `Casos Reportados` = n)

tabla_dual(tabla_modalidades, "Tabla 7. Distribución de hechos delictivos reportados según modalidad (P20A)", digitos = 1)
Tabla 7. Distribución de hechos delictivos reportados según modalidad (P20A)
Modalidad Delictiva Casos Reportados Participación (%)
Hurto a personas 528 56.1
Hurto de vehículos/partes 127 13.5
Extorsión/vacunas 121 12.9
Hurto a residencias 56 6.0
Lesiones personales 40 4.3
Vandalismo 38 4.0
Hurto al comercio 18 1.9
Explosión petardos/granadas 13 1.4

Para evaluar si los estratos más atemorizados son efectivamente los más afectados, construyo en la Figura 6 un gráfico de puntos y líneas (Lollipop chart) que compara en paralelo la tasa de victimización real con el porcentaje de inseguridad en la ciudad:

df_paradoja <- base %>%
  filter(!is.na(estrato_cat), estrato_cat %in% paste("Estrato", 1:5)) %>%
  group_by(Estrato = estrato_cat) %>%
  summarise(
    `Victimización Real` = round(mean(victima_num, na.rm = TRUE) * 100, 1),
    `Inseguridad Percibida` = round(mean(sec_ciudad %in% c("Inseguro", "Muy inseguro"), na.rm = TRUE) * 100, 1)
  ) %>%
  pivot_longer(cols = c(`Victimización Real`, `Inseguridad Percibida`), names_to = "Indicador", values_to = "Porcentaje")

ggplot(df_paradoja, aes(x = Estrato, y = Porcentaje, color = Indicador)) +
  geom_line(aes(group = Indicador), linewidth = 0.8, alpha = 0.7) +
  geom_point(size = 3.5) +
  geom_text(aes(label = paste0(Porcentaje, "%")), vjust = -0.8, size = 2.4, show.legend = FALSE) +
  scale_color_manual(values = c("Victimización Real" = "#2b5c8f", "Inseguridad Percibida" = "#d95f02")) +
  scale_y_continuous(limits = c(0, 75), breaks = seq(0, 70, 15)) +
  labs(
    title = "Figura 6. Brecha entre victimización real e inseguridad subjetiva por estrato",
    subtitle = "Tasa de victimización efectiva (P20A) frente a percepción de inseguridad urbana (P5)",
    x = "Estrato Socioeconómico",
    y = "Porcentaje (%)",
    color = "Dimensión"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 8),
    plot.subtitle = element_text(size = 7, color = "gray30"),
    axis.text = element_text(size = 7.5),
    axis.title = element_text(size = 8),
    legend.title = element_text(size = 8),
    legend.text = element_text(size = 7),
    legend.position = "bottom"
  )
Figura 6. Comparativo entre victimización real e inseguridad percibida según estrato

Figura 6. Comparativo entre victimización real e inseguridad percibida según estrato


7.2 El embudo de la denuncia y la cifra oculta institucional

El impacto del delito no se agota en su ocurrencia: su procesamiento judicial depende de la disposición de la víctima a denunciar. En el módulo de hurto a personas (P26), de 570 víctimas directas que detallaron el suceso, 348 personas decidieron no denunciar frente a solo 222 que sí lo hicieron, determinando una tasa de denuncia del 38,9% y una cifra negra del 61,1%.

# Tabla de motivos de no denuncia (P30)
recode_motivos <- function(x) {
  case_when(
    x == 1 ~ "Desconocía el proceso de denuncia",
    x == 2 ~ "Miedo a represalias / amenazas",
    x == 3 ~ "Las autoridades no hacen nada",
    x == 4 ~ "Cercanía con el agresor (familiar/amigo)",
    x == 5 ~ "Consideró el hecho innecesario",
    x == 6 ~ "Trámites demorados y engorrosos",
    x == 7 ~ "Falta de pruebas del hecho",
    x == 996 ~ "Otro motivo",
    TRUE ~ NA_character_
  )
}

Para esquematizar el desgaste procesal desde el hecho delictivo hasta su reporte formal, presento en la Figura 7 un diagrama horizontal de embudo institucional:

n_muestra   <- 4680
n_victimas  <- sum(base$victima_num == 1, na.rm = TRUE)
n_modulo_p  <- sum(base$P26 %in% c(1, 2), na.rm = TRUE)
n_denuncias <- sum(base$P26 == 1, na.rm = TRUE)

df_funnel <- data.frame(
  Etapa = c("Total informantes", 
            "Víctimas de algún delito", 
            "Hurto a personas registrado", 
            "Denuncia formal instaurada"),
  Casos = c(n_muestra, n_victimas, n_modulo_p, n_denuncias)
)

# Fijar orden decreciente en coord_flip
df_funnel$Etapa <- factor(df_funnel$Etapa, levels = rev(df_funnel$Etapa))
df_funnel$Porcentaje <- round((df_funnel$Casos / n_muestra) * 100, 1)
df_funnel$Rotulo <- paste0(df_funnel$Casos, " (", df_funnel$Porcentaje, "%)")

ggplot(df_funnel, aes(x = Etapa, y = Casos)) +
  geom_segment(aes(x = Etapa, xend = Etapa, y = 0, yend = Casos), color = "gray75", linewidth = 1.2) +
  geom_point(color = "#d95f02", size = 4.5) +
  geom_text(
    aes(label = Rotulo), 
    hjust = 0, 
    nudge_y = 150, 
    size = 2.4, 
    fontface = "bold",
    color = "black"
  ) +
  coord_flip() +
  scale_y_continuous(limits = c(0, 6800), breaks = seq(0, 5000, 1000)) +
  labs(
    title = "Figura 7. Embudo procesal del hurto y pérdida de denuncia",
    subtitle = "Atrición desde el universo muestral hasta la denuncia formal",
    x = "Nivel del Proceso",
    y = "Número de Personas"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 8),
    plot.subtitle = element_text(size = 7, color = "gray30"),
    axis.text = element_text(size = 7.5),
    axis.title = element_text(size = 8)
  )
Figura 7. Embudo procesal del delito de hurto y pérdida de denuncia

Figura 7. Embudo procesal del delito de hurto y pérdida de denuncia

Análisis e interpretación de los resultados:

Al evaluar las Tablas 7 y 8 y las Figuras 6 y 7, identifico los rasgos estructurales del delito y la respuesta ciudadana en el territorio:

  • Concentración absoluta en el hurto callejero: En la Tabla 7, el Hurto a personas encabeza la victimización con 528 casos, absorbiendo más de la mitad del total de delitos reportados (56,1%). Le siguen el hurto de vehículos o autopartes con 127 hechos (13,5%) y las extorsiones o cobro de vacunas con 121 casos (12,9%). En menor magnitud figuran el hurto a residencias (56 casos, 6,0%), lesiones personales en riñas (40 casos, 4,3%) y vandalismo (38 casos, 4,0%). El hurto comercial y las detonaciones representan menos del 2% cada uno. La violencia delictiva directa que enfrenta la población se concentra primordialmente en el despojo cotidiano en el espacio público.

  • Comprobación empírica de la paradoja del miedo: La Figura 6 evidencia una marcada brecha entre el delito efectivo y la sensación subjetiva de inseguridad:

    • La victimización real presenta una fluctuación moderada a lo largo de la pirámide social: inicia en 16,9% en el Estrato 1, pasa al 19,6% en el Estrato 2, alcanza 23,9% en el Estrato 3, desciende al 20,6% en el Estrato 4 y sube al 26,8% en el Estrato 5 (con una variación máxima de 9,9 puntos porcentuales entre extremos).

    • En contraste, la percepción de inseguridad urbana se dispara desde un 47,7% en el Estrato 1 hasta un 61,0% en el Estrato 5.

    • En todos los niveles socioeconómicos, el miedo al crimen duplica o triplica la victimización fáctica: en el Estrato 1 la distancia es de 30,8 puntos porcentuales, y en el Estrato 5 se ensancha a 34,2 puntos. Esto confirma que el temor urbano no responde de manera proporcional a la probabilidad objetiva de ser asaltado, sino que se magnifica en los sectores con mayor patrimonio.

  • La cifra negra y el colapso de la confianza institucional: La Figura 7 sintetiza el desvanecimiento del delito frente al sistema penal: de 4.680 personas encuestadas, 941 sufrieron algún delito (20,1%), 570 completaron el módulo específico de hurto a personas (12,2%), y únicamente 222 lograron formalizar una denuncia ante la autoridad, equivalente al 4,7% de la muestra general o una tasa de reporte efectiva del 38,9% entre las víctimas directas.

  • Al revisar las razones de no denuncia en la Tabla 8, resalta el desincentivo institucional: 116 personas (33,3%) no denunciaron porque “las autoridades no hacen nada”, sumado a 38 víctimas que evitaron el proceso por trámites lentos y engorrosos (10,9%) y 45 por falta de pruebas (12,9%). En conjunto, más del 57% de las omisiones de denuncia están directamente vinculadas a la desconfianza o ineficacia percibida del aparato judicial, lo que deja más del 61% de los delitos cometidos en la completa invisibilidad penal.

7.3 Diagnóstico territorial: índice de victimización ponderado y respuestas al cuestionario

Atendiendo a la especificación técnica del taller, el índice de victimización se calcula considerando si el hogar fue víctima de al menos uno de los delitos priorizados: Hurto a personas, Hurto a residencias, Hurto comercial, Hurto de vehículos o Extorsión/vacunas (P20A \(\in \{1, 2, 3, 4, 6\}\)), aplicando el factor de expansión muestral (FACTOR)[cite: 1]:

\[\text{Índice de Victimización} = \frac{\sum_{i=1}^{4673} (P20A_i = 1) \times \text{FACTOR}_i}{\sum_{i=1}^{4673} \text{FACTOR}_i}\]

var_comuna <- names(base)[str_detect(names(base), regex("comuna", ignore_case = TRUE))][1]

base <- base %>%
  mutate(
    victima_taller = ifelse(P20A %in% c(1, 2, 3, 4, 6), 1, ifelse(P20A == 10, 0, 0))
  )

tabla_comunas_pond <- base %>%
  filter(!is.na(.data[[var_comuna]]), !is.na(P20A), !is.na(FACTOR)) %>%
  group_by(Comuna = as.character(.data[[var_comuna]])) %>%
  summarise(
    `Muestra Encuestada` = n(),
    `Hogares Expandidos` = round(sum(FACTOR), 0),
    `Víctimas Expandidas` = round(sum(victima_taller * FACTOR), 0),
    `Índice Victimización (%)` = round((sum(victima_taller * FACTOR) / sum(FACTOR)) * 100, 1)
  ) %>%
  arrange(desc(`Índice Victimización (%)`))

tabla_dual(tabla_comunas_pond, "Tabla 9. Índice de victimización delictiva ponderado por comunas (factor de expansión)", digitos = 1)
Tabla 9. Índice de victimización delictiva ponderado por comunas (factor de expansión)
Comuna Muestra Encuestada Hogares Expandidos Víctimas Expandidas Índice Victimización (%)
5 219 55058 15181 27.6
7 293 104998 24613 23.4
60 156 77100 17694 22.9
4 404 117239 26408 22.5
8 375 121643 26236 21.6
13 393 127799 26567 20.8
16 268 114549 23800 20.8
3 373 132806 27246 20.5
2 405 95494 18794 19.7
9 389 136528 25799 18.9
1 282 81305 14783 18.2
10 109 21386 3850 18.0
80 250 90910 15434 17.0
12 44 5379 813 15.1
90 31 1854 265 14.3
6 394 137127 18872 13.8
11 62 21749 2858 13.1
70 129 9058 1151 12.7
15 94 6859 773 11.3
50 3 59 0 0.0
df_comunas_plot <- tabla_comunas_pond %>%
  rename(Comuna = 1, Tasa = `Índice Victimización (%)`) %>%
  filter(!is.na(Comuna)) %>%
  mutate(
    Comuna = factor(Comuna, levels = Comuna[order(Tasa)]),
    Comparacion = ifelse(Tasa >= 20.0, "Sobre el promedio", "Bajo el promedio")
  )

ggplot(df_comunas_plot, aes(x = Comuna, y = Tasa, fill = Comparacion)) +
  geom_col(width = 0.72) +
  geom_hline(yintercept = 20.0, linetype = "dashed", color = "#c0392b", linewidth = 0.8) +
  annotate("text", x = 3.5, y = 21.2, label = "Promedio Castellana: 20,0%", 
           color = "#c0392b", fontface = "bold", size = 2.8, hjust = 0) +
  geom_text(aes(label = paste0(round(Tasa, 1), "%")), 
            hjust = -0.15, size = 2.4, color = "black", fontface = "bold") +
  scale_fill_manual(values = c("Sobre el promedio" = "#2980b9", "Bajo el promedio" = "#95a5a6")) +
  coord_flip() +
  scale_y_continuous(limits = c(0, 32), breaks = seq(0, 30, 5)) +
  labs(
    title = "Figura 8. Heterogeneidad territorial de la victimización ponderada por comuna",
    subtitle = "Línea punteada roja indica el umbral del promedio general de la ciudad (20,0%)",
    x = "Comuna",
    y = "Índice de Victimización Ponderado (%)",
    fill = "Situación"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 8.5),
    plot.subtitle = element_text(size = 7.5, color = "gray30"),
    axis.text = element_text(size = 7.5),
    axis.title = element_text(size = 8),
    legend.position = "bottom",
    legend.title = element_text(size = 7.5, face = "bold"),
    legend.text = element_text(size = 7)
  )
Figura 8. Tasa de victimización ponderada por comuna frente al promedio de la ciudad

Figura 8. Tasa de victimización ponderada por comuna frente al promedio de la ciudad

7.3.1 Paradoja territorial: contraste empírico entre victimización y percepción por comuna

Para verificar si la “paradoja de la seguridad” (Propuesta inicialmente con el objetivo de profundizar en el taller) se reproduce en la escala intraurbana, se contrasta la tasa objetiva de victimización ponderada de cada comuna frente a su nivel de temor en el espacio público (inseguridad en la comuna).

# Detectar la variable de percepción comunal
var_inseg_com <- names(base)[str_detect(names(base), regex("^(P11_2|P12_2|P12B|seg.*comuna|comuna.*seg)", ignore_case = TRUE))][1]
if(is.na(var_inseg_com)) var_inseg_com <- "P12_2"

df_paradoja_comunas <- base %>%
  mutate(
    victima_taller = ifelse(P20A %in% c(1, 2, 3, 4, 6), 1, ifelse(P20A == 10, 0, 0)),
    inseguro_comuna = ifelse(.data[[var_inseg_com]] %in% c(2, "2", "Inseguro", "Muy inseguro", 3, "3"), 1, 0)
  ) %>%
  filter(!is.na(.data[[var_comuna]]), !is.na(P20A), !is.na(FACTOR)) %>%
  group_by(Comuna = as.character(.data[[var_comuna]])) %>%
  summarise(
    Muestra = n(),
    Victimizacion = round((sum(victima_taller * FACTOR, na.rm = TRUE) / sum(FACTOR, na.rm = TRUE)) * 100, 1),
    Temor_Comuna = round((sum(inseguro_comuna * FACTOR, na.rm = TRUE) / sum(FACTOR, na.rm = TRUE)) * 100, 1)
  ) %>%
  filter(Muestra >= 30)

# Promedios de referencia
corte_x <- 20.0
corte_y <- round(mean(df_paradoja_comunas$Temor_Comuna, na.rm = TRUE), 1)

ggplot(df_paradoja_comunas, aes(x = Victimizacion, y = Temor_Comuna, label = Comuna)) +
  geom_point(color = "#6B1724", size = 3.5, alpha = 0.9) +
  geom_text(vjust = -0.7, hjust = 0.5, size = 3, fontface = "bold", color = "#2c3e50") +
  geom_vline(xintercept = corte_x, linetype = "dashed", color = "#DAA520", linewidth = 0.8) +
  geom_hline(yintercept = corte_y, linetype = "dashed", color = "#DAA520", linewidth = 0.8) +
  scale_y_continuous(expand = expansion(mult = c(0.1, 0.18))) +
  scale_x_continuous(expand = expansion(mult = c(0.08, 0.08))) +
  labs(
    title = "Figura 9. Cuadrantes de discrepancia: victimización real vs. percepción de inseguridad",
    subtitle = paste0("Líneas punteadas doradas: Promedio Victimización (", corte_x, "%) | Promedio Temor Comunal (", corte_y, "%)"),
    x = "Tasa de Victimización Ponderada (%)",
    y = "Sensación de Inseguridad en la Comuna (%)"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 9, color = "#6B1724"),
    plot.subtitle = element_text(size = 7.5, color = "gray30"),
    axis.text = element_text(size = 7.5),
    axis.title = element_text(size = 8)
  )
Figura 9. Dispersión entre temor subjetivo comunal y victimización efectiva por unidad espacial

Figura 9. Dispersión entre temor subjetivo comunal y victimización efectiva por unidad espacial

Interpretación de la paradoja territorial de la seguridad:

El análisis cruzado revela una clara desarticulación empírica entre el riesgo objetivo de victimización y la percepción subjetiva de amenaza en el entorno comunal:

  • Cuadrante superior izquierdo (Hipervigilancia y alarma subjetiva): Comunas como la 12, 11 y 15 exhiben tasas objetivas de victimización por debajo del promedio distrital (< 20,0%), pero registran los niveles más altos de sensación de inseguridad comunal (llegando al 19,1% en la Comuna 12). Esto responde a dinámicas de vulnerabilidad percibida y resonancia mediática de eventos delictivos aislados.

  • Cuadrante inferior derecho (Paradoja de normalización del riesgo): Unidades territoriales como las comunas 5, 60, 4, 8 y 7 presentan una incidencia delictiva crítica (> 20,0%, destacando la Comuna 5 con 27,6%), pero sus residentes reportan niveles de temor comunal inferiores al promedio urbano (< 7,6%). Este patrón evidencia un fenómeno de habituación cotidiana y tolerancia adaptativa frente a la exposición recurrente al delito.

  • Comunas de convergencia: La Comuna 16 representa el sector de mayor tensión combinada al ubicarse en el cuadrante superior derecho (alta victimización y elevado temor), demandando intervención prioritaria tanto en presencia policial como en recuperación del espacio público.

7.3.2 Respuestas al cuestionario analítico territorial

  1. ¿Cuál es el índice de victimización para la ciudad Castellana?
    El índice de victimización global ponderado para la ciudad Castellana es del 20,0% (291.139 hogares expandidos víctimas sobre un universo poblacional estimado de 1.458.900 hogares representados en 4.673 encuestas válidas).

  2. ¿Cuál es el índice de victimización por comunas?
    La tasa ponderada fluctúa entre el 0,0% y el 27,6%, tal como se detalla de manera jerárquica en la Tabla 9 y la Figura 8.

  3. ¿En qué comuna es mayor este índice?
    La tasa más alta se concentra en la Comuna 5, con un índice de victimización ponderado del 27,6% (15.181 hogares afectados), seguida por la Comuna 7 (23,4%) y la Comuna 60 (23,0%).

  4. ¿En qué comuna menor?
    El índice más bajo se registró en la Comuna 50 (0,0%, con 3 encuestas)[cite: 1]. Considerando unidades territoriales con muestra robusta (\(N > 100\)), la tasa más baja corresponde a la Comuna 15 con un 11,3%, seguida de la Comuna 70 (12,7%) y la Comuna 11 (13,1%).

8 Conclusiones y recomendaciones de política pública

A partir de la triangulación empírica entre las condiciones socioeconómicas de los hogares, la estructura subjetiva del temor urbano y la victimización delictiva fáctica, presento las conclusiones estructurales del diagnóstico y los lineamientos de política pública orientados a fortalecer la gestión de la seguridad y la convivencia en el municipio.

8.1 Conclusiones analíticas

  1. Vulnerabilidad socioeconómica y estructura del hogar: La población encuestada se localiza predominantemente en estratos bajos (Estratos 1 al 3 concentran el 87,4%), caracterizados por una alta proporción de jefaturas de hogar femeninas, trabajadoras dedicadas al cuidado no remunerado y ocupaciones por cuenta propia. Esta composición evidencia una reducida capacidad de resiliencia económica frente a pérdidas patrimoniales causadas por hechos delictivos.

  2. El gradiente territorial de la desconfianza: Se identificó una relación inversa entre proximidad física y temor al delito: mientras que en el barrio solo el 16,3% de los habitantes se siente inseguro, la inseguridad escala al 20,6% en la comuna y se multiplica drásticamente en la escala metropolitana hasta alcanzar el 52,5%. La cohesión comunitaria y el control social informal mitigan el temor vecinal, mientras que los traslados hacia el espacio urbano consolidado intensifican la sensación de amenaza.

  3. Brecha de género en el uso del espacio público: Las mujeres reportan mayores niveles de alarma que los hombres en todas las dimensiones territoriales, con una distancia que se amplía en la ciudad global a 8,7 puntos porcentuales (56,7% en mujeres frente a 48,0% en hombres). Esto subraya que la experiencia de tránsito y permanencia urbana no es neutral y genera condiciones de vulnerabilidad diferenciadas para la población femenina.

  4. La paradoja empírica de la seguridad: Al contrastar percepción y victimización, se constata que el temor subjetivo no guarda correspondencia lineal con el riesgo real de victimización. Mientras que la tasa efectiva de delito fluctúa en un margen estrecho entre estratos (del 16,9% en el Estrato 1 al 26,8% en el Estrato 5), la percepción de inseguridad urbana se intensifica de forma pronunciada en los estratos medios y altos (superando el 60% en estratos 4 y 5), demostrando una mayor sensibilidad al temor patrimonial en sectores de mayores ingresos.

  5. Colapso del reporte formal y persistencia de la cifra negra: Con una tasa de denuncia de apenas el 38,9% frente al hurto a personas, más del 61% de los delitos ocurridos permanece fuera del radar institucional. El principal factor explicativo es el escepticismo ciudadano hacia el aparato estatal: un tercio de las víctimas no denunció porque considera que “las autoridades no hacen nada” (33,3%), a lo que se suman barreras de tiempo, trámites engorrosos y falta de elementos probatorios.

8.2 Lineamientos estratégicos de política pública

  • Intervención focalizada en corredores de hurto callejero: Dado que el hurto a personas absorbe el 56,1% del total de eventos delictivos, se debe priorizar el patrullaje preventivo y la videovigilancia inteligente en los corredores de transporte masivo, paraderos y nodos de articulación vial donde se genera la transición del entorno barrial seguro al entorno urbano desprotegido.

  • Modernización y descentralización del sistema de denuncias: Para mitigar la cifra oculta provocada por la desconfianza y la tramitología, es imperativo establecer unidades móviles de recepción de denuncia en sedes locales y puntos comunitarios, integrando mecanismos digitales ágiles con acompañamiento técnico que reduzcan los costos de transacción para la ciudadanía.

  • Urbanismo táctico y seguridad con enfoque de género: Implementar intervenciones físicas prioritarias en el entorno urbano (modernización del alumbrado público a tecnología LED, recuperación de senderos peatonales, eliminación de puntos ciegos y diseño de paraderos seguros) diseñadas a partir de mapas de calor de percepción de inseguridad femenina.

  • Fortalecimiento de la cohesión vecinal como activo de seguridad: La baja tasa de inseguridad en los barrios (16,3%) demuestra que las redes de apoyo comunitario funcionan como un blindaje efectivo. La política de seguridad distrital debe articularse formalmente con las juntas de acción comunal y organizaciones juveniles de base para preservar este capital social y evitar la fragmentación urbana.

9 Referencias y fuentes de consulta

El desarrollo de este informe se fundamenta en las indicaciones académicas de la asignatura dadas por el Dr. Jacobo Campo Robledo, el marco conceptual estándar para la medición de la seguridad ciudadana en Colombia, los fundamentos criminológicos sobre la cifra oculta del delito y la literatura especializada en análisis de datos reproducible, agrego este apartado de referencias con el fin de complemenytar un poco mas el trabajo:

  • Campo Robledo, J. (2026). Taller en Clase: Big Data y Análisis de Datos. Facultad de Ciencias Económicas y Administrativas, Universidad Católica de Colombia. Lineamientos metodológicos y formulación analítica para el diagnóstico empírico de Ciudad Castellana.
  • Departamento Administrativo Nacional de Estadística - DANE. Encuesta de Convivencia y Seguridad Ciudadana (ECSC). Marco conceptual y diseño muestral para la captura de percepción de seguridad y victimización urbana en hogares colombianos.
  • Skogan, W. G. (1977). Dimensions of the dark figure of crime. Crime & Delinquency, 23(1), 41-50. Marco teórico aplicado para el análisis de la cifra negra y las barreras institucionales a la denuncia ciudadana.
  • Wickham, H., Çetinkaya-Rundel, M., & Grolemund, G. (2023). R for Data Science: Import, Tidy, Transform, Visualize, and Model Data (2nd ed.). O’Reilly Media. Soporte computacional para la manipulación tidyverse y la estandarización gráfica en ggplot2.
  • Xie, Y., Allaire, J. J., & Grolemund, G. (2018). R Markdown: The Definitive Guide. Chapman and Hall/CRC. Estándar metodológico de reproducibilidad y parametrización de salidas técnicas en HTML y PDF.

10 Declaración sobre el uso de Inteligencia Artificial

En concordancia con las buenas prácticas de integridad académica y transparencia durante la clase, presento la siguiente declaracion de IA; se declara que para el desarrollo y afinamiento de este informe técnico se contó con el apoyo de Gemini (modelo de lenguaje de Google) como herramienta de asistencia y co-creación analítica.

El uso de esta herramienta se delimitó a las siguientes funciones:

  • Soporte técnico y depuración: Asistencia en la identificación y corrección de advertencias y errores de compilación durante el renderizado con knitr en RStudio.

  • Diseño y parametrización visual: Apoyo en la optimización del diseño del documento mediante estilos CSS personalizados, selección y contraste de paletas cromáticas, estructuración de tarjetas ejecutivas de métricas clave (KPI) y refinamiento estético de las visualizaciones generadas con ggplot2.

  • Estructuración y completitud metodológica: Revisión de la cohesión narrativa del reporte y optimización de sintaxis en R para garantizar la cobertura exhaustiva de las dimensiones del taller.

Responsabilidad del autor:
El autor revisó, validó, editó y ejecutó de manera autónoma e independiente la totalidad del código fuente, las operaciones estadísticas, la interpretación de las tablas y las reflexiones teóricas presentadas en este informe. Los cálculos finales, la coherencia de los resultados ponderados y las conclusiones de política pública son de exclusiva responsabilidad del autor.

Trabajo elaborado como Taller II - Big Data y Análisis de Datos - Universidad Católica de Colombia - Dr. Jacobo Campo Robledo - Septiembre 17

Autor:

knitr::include_graphics("C:/Users/s12e10/Downloads/EJERCICIO/Background Eraser (1).png")