# 1. CARGA DE LIBRERÍAS Y DATOS
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.2.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Cargar la base de datos. 
datos <- read.csv("establecimientos_20251014.csv", 
                  sep = ";", 
                  encoding = "latin1", # Ayuda con tildes y ñ
                  stringsAsFactors = FALSE)
# 2. LIMPIEZA Y PREPARACIÓN DE VARIABLES
# creacion de un subconjunto de datos limpio para responder la pregunta.
# pregunta compara "Dependencia Administrativa" (Público vs Privado)
# contra "Nivel de Complejidad" y "Servicio de Urgencia".

datos_analisis <- datos %>%
  # 1. Crear la variable "Sector" agrupando las dependencias
  mutate(Sector = case_when(
    DependenciaAdministrativa %in% c("Servicio de Salud", "Municipal", 
                                     "Corporación Municipal", "SEREMI de Salud", 
                                     "Público", "Delegado", "Delegados", 
                                     "Gendamería") ~ "Público",
    DependenciaAdministrativa %in% c("Privado", "Otra Institución") ~ "Privado",
    TRUE ~ "Otros" # Para FFAA u otros que quieras excluir
  )) %>%
  
  # 2. Estandarizar la variable Urgencia (hay "NO" y "No" mezclados)
  mutate(TieneUrgencia = case_when(
    toupper(TieneServicioUrgencia) == "SI" ~ "Sí",
    toupper(TieneServicioUrgencia) == "NO" ~ "No",
    TRUE ~ NA_character_ # Marcar "No Aplica" como NA para filtrar después
  )) %>%
  
  # 3. Filtrar datos que no nos sirven (Nulos, "No Aplica", o "Otros" sectores)
  filter(Sector %in% c("Público", "Privado"),
         !is.na(TieneUrgencia),
         NivelComplejidadEstabGlosa %in% c("Alta Complejidad", "Mediana Complejidad", "Baja Complejidad"))

# Verificcion de datos limpios
table(datos_analisis$Sector)
## 
## Privado Público 
##    1073    3008
table(datos_analisis$NivelComplejidadEstabGlosa)
## 
##    Alta Complejidad    Baja Complejidad Mediana Complejidad 
##                 118                3149                 814
# 3. ESTADÍSTICA DESCRIPTIVA (Tablas)
print("--- Tabla Cruzada: Sector vs. Nivel de Complejidad ---")
## [1] "--- Tabla Cruzada: Sector vs. Nivel de Complejidad ---"
tabla_complejidad <- table(datos_analisis$Sector, datos_analisis$NivelComplejidadEstabGlosa)
print(tabla_complejidad)
##          
##           Alta Complejidad Baja Complejidad Mediana Complejidad
##   Privado               47              376                 650
##   Público               71             2773                 164
# Porcentajes (prop.table con margin=1 para ver % dentro de cada sector)
print(round(prop.table(tabla_complejidad, margin = 1) * 100, 2))
##          
##           Alta Complejidad Baja Complejidad Mediana Complejidad
##   Privado             4.38            35.04               60.58
##   Público             2.36            92.19                5.45
print("--- Tabla Cruzada: Sector vs. Disponibilidad de Urgencia ---")
## [1] "--- Tabla Cruzada: Sector vs. Disponibilidad de Urgencia ---"
tabla_urgencia <- table(datos_analisis$Sector, datos_analisis$TieneUrgencia)
print(tabla_urgencia)
##          
##             No   Sí
##   Privado 1017   56
##   Público 2324  684
# Porcentajes
print(round(prop.table(tabla_urgencia, margin = 1) * 100, 2))
##          
##              No    Sí
##   Privado 94.78  5.22
##   Público 77.26 22.74
# 4. VISUALIZACIÓN (Para el Póster)
# Gráfico 1: Nivel de Complejidad según Sector
g1 <- ggplot(datos_analisis, aes(x = Sector, fill = NivelComplejidadEstabGlosa)) +
  geom_bar(position = "fill") + # "fill" crea barras al 100% para comparar proporciones
  labs(title = "Figura 1: Distribución de Complejidad según Sector",
       y = "Proporción",
       x = "Sector Administrativo",
       fill = "Nivel de Complejidad") +
  theme_minimal() +
  scale_fill_brewer(palette = "Blues")

print(g1)

# Gráfico 2: Disponibilidad de Urgencia según Sector
g2 <- ggplot(datos_analisis, aes(x = Sector, fill = TieneUrgencia)) +
  geom_bar(position = "fill") +
  labs(title = "Figura 2: Disponibilidad de Servicios de Urgencia",
       y = "Proporción",
       x = "Sector Administrativo",
       fill = "Tiene Urgencia") +
  theme_minimal() +
  scale_fill_manual(values = c("No" = "#FF9999", "Sí" = "#66CC99")) # Colores personalizados

print(g2)

# 5. ESTADÍSTICA INFERENCIAL (Prueba de Hipótesis)
# Usamos Chi-Cuadrado porque comparamos variables categóricas.
# H0: Las variables son independientes (No hay diferencia entre sectores).
# H1: Las variables están relacionadas (Hay diferencias significativas).

print("--- Resultado Test Chi-Cuadrado: Complejidad ---")
## [1] "--- Resultado Test Chi-Cuadrado: Complejidad ---"
test_complejidad <- chisq.test(tabla_complejidad)
print(test_complejidad)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_complejidad
## X-squared = 1550.8, df = 2, p-value < 2.2e-16
print("--- Resultado Test Chi-Cuadrado: Urgencia ---")
## [1] "--- Resultado Test Chi-Cuadrado: Urgencia ---"
test_urgencia <- chisq.test(tabla_urgencia)
print(test_urgencia)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabla_urgencia
## X-squared = 162.36, df = 1, p-value < 2.2e-16
# ANEXO: Detección de la MODA (La única medida de tendencia central válida aquí)
# 1. Moda de la Dependencia (¿Hay más públicos o privados?)
moda_sector <- names(sort(table(datos_analisis$Sector), decreasing = TRUE)[1])
cat("La Moda del Sector es:", moda_sector, "\n")
## La Moda del Sector es: Público
# 2. Moda de la Complejidad
moda_complejidad <- names(sort(table(datos_analisis$NivelComplejidadEstabGlosa), decreasing = TRUE)[1])
cat("La Moda de la Complejidad es:", moda_complejidad, "\n")
## La Moda de la Complejidad es: Baja Complejidad
# 3. Moda de Urgencia
moda_urgencia <- names(sort(table(datos_analisis$TieneUrgencia), decreasing = TRUE)[1])
cat("La Moda de Disponibilidad de Urgencia es:", moda_urgencia, "\n")
## La Moda de Disponibilidad de Urgencia es: No