# **Introducción**
# La seguridad pública es un aspecto clave en el desarrollo de cualquier nación. Este análisis evalúa la incidencia delictiva en México
# utilizando datos de la **Encuesta Nacional de Victimización y Percepción sobre Seguridad Pública (ENVIPE) 2023**.

# El estudio se centra en el uso de **modelos estadísticos avanzados, análisis de clustering y técnicas probabilísticas** para entender
# tendencias delictivas y evaluar políticas de seguridad.
# **Fuente de los datos:**
# **INEGI - Encuesta Nacional de Victimización y Percepción sobre Seguridad Pública (ENVIPE) 2023**  
# Disponible en: [https://www.inegi.org.mx/programas/envipe/](https://www.inegi.org.mx/programas/envipe/)
# Carga de librerías necesarias
# Cargar datos de ENVIPE 2023
datos <- read_csv("C:/Users/MARIN/Downloads/bd_envipe_2023_csv/TPer_Vic1.CSV", col_names = TRUE, show_col_types = FALSE)
## New names:
## • `` -> `...1`
# Normalizar nombres de columnas
datos <- datos %>% rename_with(toupper)

# Eliminar columnas innecesarias
if ("..1" %in% names(datos)) {
  datos <- datos %>% select(-"..1")
}

# Selección y renombrado de variables clave
columnas_requeridas <- c("SEXO", "EDAD", "NOM_ENT", "AP4_3_1", "FAC_ELE")

if (all(columnas_requeridas %in% names(datos))) {
  datos_seguridad <- datos[, columnas_requeridas]
  colnames(datos_seguridad) <- c("Sexo", "Edad", "Entidad", "TipoDelito", "FactorExpansion")
} else {
  stop("ERROR: Algunas columnas faltan en los datos. Revisa names(datos)")
}

# Mapeo de los valores de TipoDelito según su clasificación oficial
delitos_map <- c("1" = "Robo", "2" = "Fraude", "9" = "Otros delitos")
datos_seguridad$TipoDelito <- as.character(datos_seguridad$TipoDelito)
datos_seguridad$TipoDelito <- factor(datos_seguridad$TipoDelito, levels = names(delitos_map), labels = delitos_map)
# Modelo de clasificación usando Random Forest
set.seed(123)
modelo_rf <- randomForest(TipoDelito ~ Sexo + Edad, data = datos_seguridad, ntree = 500)

# Predicciones
datos_seguridad$Prediccion_RF <- predict(modelo_rf, datos_seguridad)

# Matriz de Confusión
matriz_confusion <- table(Predicho = datos_seguridad$Prediccion_RF, Real = datos_seguridad$TipoDelito)
print("Matriz de Confusión para Random Forest")
## [1] "Matriz de Confusión para Random Forest"
print(matriz_confusion)
##                Real
## Predicho         Robo Fraude Otros delitos
##   Robo          58250  33478           256
##   Fraude            0      0             0
##   Otros delitos     0      0             0
# Análisis de clustering para clasificación de estados según incidencia delictiva
datos_cluster <- datos_seguridad %>% group_by(Entidad) %>% summarise(TotalCasos = sum(FactorExpansion))

modelo_gmm <- Mclust(datos_cluster$TotalCasos)
datos_cluster <- datos_cluster %>% mutate(Grupo = modelo_gmm$classification)

# Mapeo de nombres descriptivos para los grupos de clasificación
grupo_map <- c("1" = "Baja incidencia", "2" = "Alta incidencia")
datos_cluster$Grupo <- factor(datos_cluster$Grupo, levels = names(grupo_map), labels = grupo_map)

# Visualización de la segmentación de estados
ggplot(datos_cluster, aes(x = reorder(Entidad, TotalCasos), y = TotalCasos, fill = Grupo)) +
  geom_col() +
  coord_flip() +
  labs(title = "Clasificación Probabilística de Estados según Incidencia Delictiva",
       x = "Estado", y = "Incidencia Delictiva", fill = "Clasificación") +
  theme_minimal()

# Visualización de la relación entre Edad y Tipo de Delito
ggplot(datos_seguridad, aes(x = Edad, fill = TipoDelito)) +
  geom_density(alpha = 0.6) +
  labs(title = "Distribución de Edad según Tipo de Delito",
       x = "Edad", y = "Densidad", fill = "Tipo de Delito") +
  theme_minimal()

# Distribución de casos por entidad
ggplot(datos_seguridad, aes(x = reorder(Entidad, FactorExpansion), y = FactorExpansion)) +
  geom_col(fill = "steelblue") +
  coord_flip() +
  labs(title = "Distribución de Casos de Delitos por Entidad",
       x = "Entidad", y = "Casos Reportados") +
  theme_minimal()

Conclusión

Este análisis demuestra la utilidad de los modelos estadísticos para evaluar la seguridad pública y la efectividad de las políticas de prevención del delito. Se destaca la necesidad de mejorar la precisión en las predicciones y utilizar más datos detallados sobre el contexto de los delitos.

Para futuros estudios, se recomienda incluir:

- Factores socioeconómicos relacionados con el crimen

- Datos más granulares en el tiempo

- Mayor segmentación de las tipologías delictivas