# 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:63          Min.   :2021   Min.   :15.50           Min.   : 6.20     
##  Class :character   1st Qu.:2021   1st Qu.:52.75           1st Qu.:21.25     
##  Mode  :character   Median :2022   Median :61.40           Median :31.10     
##                     Mean   :2022   Mean   :58.35           Mean   :29.30     
##                     3rd Qu.:2023   3rd Qu.:68.65           3rd Qu.:38.05     
##                     Max.   :2023   Max.   :82.20           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
Buenos Aires 0.9999640 1.0424617 35.7666219
Aranjuez 0.9993472 2.5733253 -16.8659626
Corregimiento de San Cristóbal 0.9982668 0.8915876 34.1364956
Robledo 0.9807081 0.7179487 40.1923077
La Candelaria 0.9748148 2.5772201 -14.7394466
Guayabal 0.9371870 0.2840523 50.9961396
Corregimiento de San Antonio de Prado 0.8665835 1.1778664 22.5862756
Manrique 0.8485036 2.1561181 -14.2468354
Popular 0.8394354 1.6563275 -2.2744417
Belén 0.8129433 1.5098478 23.4953894
Villa Hermosa 0.7984539 3.9190173 -74.9396724
El Poblado 0.6489592 2.2790698 -0.9162791
Doce de Octubre 0.6463175 1.1523669 28.2178994
La América 0.4811686 1.9686347 16.9615006
Santa Cruz 0.4503204 1.7779097 -2.8168250
Corregimiento de Altavista 0.3993878 1.8124626 -5.6590773
Laureles Estadio 0.3539101 0.9121253 20.3498638
San Javier -0.0729171 -0.3806647 78.7344411
Corregimiento de Santa Elena -0.3882582 -0.6923077 93.0589744
Corregimiento de San Sebastián de Palmitas -0.8759225 -0.4671769 94.2123835
Castilla -0.9870222 -2.0729633 111.8591316
# 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()