# Cargar librerías necesarias
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(sf)
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(tidyr)

# Ruta al archivo Excel
file_path <- "C:/Users/Daniel Restrepo/Desktop/DICIEMBRE DAP final/base_datos_unificada.xlsx"

# Leer los datos
data <- read_excel(file_path)

# Convertir columnas a formato numérico y manejar valores faltantes
data <- data %>%
  mutate(
    Inseguridad_Alimentaria = as.numeric(Inseguridad_Alimentaria),
    Incidencia_Pobreza = as.numeric(Incidencia_Pobreza)
  ) %>%
  drop_na(Incidencia_Pobreza, Inseguridad_Alimentaria)

# Verificar los datos
summary(data)
##    Comunas             Vigencia    Inseguridad_Alimentaria Incidencia_Pobreza
##  Length:79          Min.   :2019   Min.   : 6.9            Min.   : 6.10     
##  Class :character   1st Qu.:2021   1st Qu.:44.6            1st Qu.:20.20     
##  Mode  :character   Median :2022   Median :58.9            Median :30.30     
##                     Mean   :2021   Mean   :54.8            Mean   :28.59     
##                     3rd Qu.:2023   3rd Qu.:66.5            3rd Qu.:37.20     
##                     Max.   :2023   Max.   :82.2            Max.   :57.10
# Resumen estadístico por comuna y vigencia
summary_stats <- data %>%
  group_by(Comunas, Vigencia) %>%
  summarise(
    Promedio_Pobreza = mean(Incidencia_Pobreza, na.rm = TRUE),
    Promedio_Inseguridad = mean(Inseguridad_Alimentaria, na.rm = TRUE),
    .groups = 'drop'
  )

# Gráfico de dispersión
ggplot(data, aes(x = Incidencia_Pobreza, y = Inseguridad_Alimentaria)) +
  geom_point(aes(color = Comunas), alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(
    title = "Relación entre Pobreza e Inseguridad Alimentaria",
    x = "Incidencia de Pobreza Monetaria (%)",
    y = "Inseguridad Alimentaria (%)"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

# Gráfico de barras del promedio de pobreza
ggplot(summary_stats, aes(x = reorder(Comunas, -Promedio_Pobreza), y = Promedio_Pobreza)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  coord_flip() +
  labs(
    title = "Promedio de Pobreza por Comuna",
    x = "Comunas",
    y = "Promedio de Pobreza Monetaria (%)"
  ) +
  theme_minimal()

# Cargar shapefile
shapefile_path <- "C:/Users/Daniel Restrepo/Desktop/DICIEMBRE DAP final/LimiteComunaCorregimiento_2014.shp"
medellin_map <- st_read(shapefile_path)
## Reading layer `LimiteComunaCorregimiento_2014' from data source 
##   `C:\Users\Daniel Restrepo\Desktop\DICIEMBRE DAP final\LimiteComunaCorregimiento_2014.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 23 features and 7 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -75.71931 ymin: 6.162904 xmax: -75.47185 ymax: 6.374872
## Geodetic CRS:  WGS 84
# Limpiar nombres en los datos y unir con el shapefile
data <- data %>%
  mutate(Comunas = gsub("^\\d+-", "", Comunas)) %>%
  mutate(Comunas = case_when(
    Comunas == "Doce De Octubre" ~ "Doce de Octubre",
    Comunas == "Laureles - Estadio" ~ "Laureles Estadio",
    Comunas == "La América" ~ "La América",
    Comunas == "Belén" ~ "Belén",
    Comunas == "San Cristóbal" ~ "Corregimiento de San Cristóbal",
    Comunas == "Palmitas" ~ "Corregimiento de San Sebastián de Palmitas",
    Comunas == "Altavista" ~ "Corregimiento de Altavista",
    Comunas == "San Antonio de Prado" ~ "Corregimiento de San Antonio de Prado",
    Comunas == "Santa Elena" ~ "Corregimiento de Santa Elena",
    TRUE ~ Comunas
  ))

data_map <- medellin_map %>%
  left_join(data, by = c("NOMBRE" = "Comunas"))
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.3.3
# Mapa de pobreza
leaflet(data_map) %>%
  addProviderTiles("OpenStreetMap") %>%
  addPolygons(
    fillColor = ~colorQuantile("YlOrRd", Incidencia_Pobreza)(Incidencia_Pobreza),
    weight = 2,
    color = "black",
    fillOpacity = 0.7,
    label = ~paste("Comuna: ", NOMBRE, "<br>Pobreza: ", Incidencia_Pobreza, "%")
  ) %>%
  addLegend(
    pal = colorQuantile("YlOrRd", domain = data_map$Incidencia_Pobreza),
    values = data_map$Incidencia_Pobreza,
    title = "Incidencia de Pobreza (%)"
  )
# Mapa de inseguridad alimentaria
leaflet(data_map) %>%
  addProviderTiles("OpenStreetMap") %>%
  addPolygons(
    fillColor = ~colorQuantile("Blues", Inseguridad_Alimentaria)(Inseguridad_Alimentaria),
    weight = 2,
    color = "black",
    fillOpacity = 0.7,
    label = ~paste("Comuna: ", NOMBRE, "<br>Inseguridad Alimentaria: ", Inseguridad_Alimentaria, "%")
  ) %>%
  addLegend(
    pal = colorQuantile("Blues", domain = data_map$Inseguridad_Alimentaria),
    values = data_map$Inseguridad_Alimentaria,
    title = "Inseguridad Alimentaria (%)"
  )
# Calcular correlación y pendiente por comuna
resultados <- data %>%
  group_by(Comunas) %>%
  summarise(
    correlacion = cor(Inseguridad_Alimentaria, Incidencia_Pobreza, use = "complete.obs"),
    pendiente = coef(lm(Inseguridad_Alimentaria ~ Incidencia_Pobreza))[2],
    intercepcion = coef(lm(Inseguridad_Alimentaria ~ Incidencia_Pobreza))[1]
  ) %>%
  arrange(desc(correlacion))

# Tabla desplazable con kableExtra
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
resultados %>%
  kable(format = "html", caption = "Correlación y pendiente por comuna") %>%
  kable_styling(bootstrap_options = "striped", full_width = FALSE) %>%
  scroll_box(width = "100%", height = "400px")
Correlación y pendiente por comuna
Comunas correlacion pendiente intercepcion
Corregimiento de San Cristóbal 0.9982668 0.8915876 34.136496
Manrique 0.9523293 3.1156089 -52.844294
Villa Hermosa 0.8960070 5.0504077 -117.727279
La Candelaria 0.8784651 1.5638651 11.507426
Corregimiento de San Antonio de Prado 0.8665835 1.1778664 22.586276
El Poblado 0.8557270 4.0376344 -16.268548
Aranjuez 0.8375905 3.8641334 -60.932837
Laureles Estadio 0.6075038 1.8887717 10.706484
Santa Cruz 0.5829632 3.7998066 -93.911702
Belén 0.5689722 2.0032482 12.074816
Castilla 0.4604163 2.0825243 6.615049
San Javier 0.4061439 4.0000000 -76.900000
Corregimiento de Altavista 0.3993878 1.8124626 -5.659077
Popular 0.2577245 0.8143976 33.304750
Robledo 0.1661021 0.6456628 37.055097
La América 0.0757670 0.4084279 28.808671
Guayabal -0.0574438 -0.1019768 53.043725
Buenos Aires -0.1943280 -0.5671950 68.296623
Corregimiento de Santa Elena -0.3882582 -0.6923077 93.058974
Doce de Octubre -0.8627006 -1.7782027 118.969599
Corregimiento de San Sebastián de Palmitas -0.8759225 -0.4671769 94.212384
# Gráfico de pendientes por comuna
ggplot(resultados, aes(x = reorder(Comunas, pendiente), y = pendiente)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  coord_flip() +
  labs(
    title = "Impacto de la Pobreza en la Inseguridad Alimentaria por Comuna",
    x = "Comunas",
    y = "Pendiente (cambio en Inseguridad Alimentaria por 1% de Pobreza)"
  ) +
  theme_minimal()