---
title: "Análisis descriptivo CASEN 2024"
subtitle: "Protocolo IPO-R — Paso 2: Procesamiento → Output"
date: today
format:
  html:
    toc: true
    toc-depth: 3
    code-fold: show
    df-print: paged
execute:
  warning: false
  message: false
---

# Objetivo

Este script realiza el **análisis descriptivo** de los datos procesados por `preparacion.qmd`. Genera tablas y gráficos que se guardan en `output/`.

::: {.callout-important}
## Requisito previo
Debes haber corrido `preparacion.qmd` antes de este script. Los datos en `input/data/proc/` deben existir.
:::

---

# 1. Paquetes

```{r}
#| label: paquetes

library(haven)    # leer objetos con etiquetas (haven_labelled)
library(dplyr)    # manipulación de datos
library(ggplot2)  # visualización
library(readr)    # exportar CSV
library(here)     # rutas relativas al proyecto

options(scipen = 999) # desactivar notación científica
```

# 2. Cargar datos procesados

```{r}
#| label: cargar-datos

casen <- readRDS(here::here("input", "data", "proc", "casen24_proc.rds"))

cat("Casos (personas):", nrow(casen), "| Variables:", ncol(casen), "\n")
```

La CASEN es una encuesta de personas dentro de hogares. Según el tipo de análisis hay que elegir la unidad correcta:

- **Análisis individual** (edad, escolaridad...): usar toda la base
- **Análisis de hogar** (ingreso, pobreza...): filtrar `pco1 == 1` para quedarse con un registro por hogar — el/la jefe/a de hogar

```{r}
#| label: hogares

# Un registro por hogar: jefes/as de hogar
hogares <- casen |> filter(pco1 == 1)

cat("Hogares (jefes/as):", nrow(hogares), "\n")
```

---

# 3. Análisis descriptivo

## 3.1 Distribución de edad (nivel individual)

```{r}
#| label: desc-edad

summary(casen$edad)
```

```{r}
#| label: hist-edad
#| fig-cap: "Distribución de edades — CASEN 2024 (población total)"
#| fig-height: 4
#| fig-width: 8

ggplot(casen, aes(x = edad)) +
  geom_histogram(binwidth = 5,
                 fill = "#1a365d",
                 color = "white",
                 alpha = 0.85) +
  labs(
    title    = "Distribución de edades — CASEN 2024",
    subtitle = "Población encuestada (nivel individual)",
    x        = "Edad (años)",
    y        = "Frecuencia"
  ) +
  theme_minimal(base_size = 13)
```

## 3.2 Ingreso promedio del hogar según sexo de la jefatura (nivel hogar)

Al analizar ingreso del hogar, usamos `hogares` (un registro por hogar). El `sexo` aquí corresponde al sexo del/la jefe/a de hogar.

```{r}
#| label: ingreso-por-sexo

tabla_ingreso <- hogares |>
  group_by(sexo) |>
  summarise(
    n                = n(),
    ingreso_promedio = round(mean(ingreso_hogar, na.rm = TRUE)),
    ingreso_mediana  = round(median(ingreso_hogar, na.rm = TRUE))
  )

tabla_ingreso
```

## 3.3 Distribución de pobreza por zona (nivel hogar)

La situación de pobreza también es un atributo del hogar, por lo que usamos `hogares`.

```{r}
#| label: pobreza-zona

tabla_pobreza <- hogares |>
  filter(!is.na(pobreza), !is.na(area)) |>
  count(area, pobreza) |>
  group_by(area) |>
  mutate(pct = round(n / sum(n) * 100, 1))

tabla_pobreza
```

```{r}
#| label: grafico-pobreza
#| fig-cap: "Distribución de pobreza por zona (CASEN 2024)"
#| fig-height: 4.5
#| fig-width: 9

ggplot(tabla_pobreza, aes(x = area, y = pct, fill = pobreza)) +
  geom_col(position = "dodge", width = 0.7) +
  geom_text(aes(label = paste0(pct, "%")),
            position = position_dodge(width = 0.7),
            vjust = -0.4, size = 3.5) +
  scale_fill_manual(
    values = c("Pobreza extrema"     = "#c0392b",
               "Pobreza no extrema"  = "#e67e22",
               "No pobre"            = "#1a365d")
  ) +
  labs(
    title    = "Situación de pobreza por zona — CASEN 2024",
    subtitle = "Porcentaje de hogares dentro de cada zona",
    x        = NULL,
    y        = "Porcentaje (%)",
    fill     = "Situación de pobreza"
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom")
```

---

# 4. Guardar outputs

## 4.1 Tabla de ingreso por sexo

```{r}
#| label: guardar-tabla

write_csv(tabla_ingreso,
          here::here("output", "tables", "ingreso_por_sexo.csv"))

cat("Tabla guardada en: output/tables/ingreso_por_sexo.csv\n")
```

## 4.2 Gráfico de distribución de edad

```{r}
#| label: guardar-grafico

# Regenerar el gráfico para guardarlo con ggsave
p_edad <- ggplot(casen, aes(x = edad)) +
  geom_histogram(binwidth = 5,
                 fill = "#1a365d",
                 color = "white",
                 alpha = 0.85) +
  labs(
    title    = "Distribución de edades — CASEN 2024",
    subtitle = "Población encuestada",
    x        = "Edad (años)",
    y        = "Frecuencia"
  ) +
  theme_minimal(base_size = 13)

ggsave(
  filename = here::here("output", "graphs", "histograma_edad.png"),
  plot     = p_edad,
  width    = 8,
  height   = 4,
  dpi      = 150
)

cat("Gráfico guardado en: output/graphs/histograma_edad.png\n")
```

---

::: {.callout-note}
## Resultado
Los archivos generados en `output/` pueden usarse en el documento final (`paper.qmd`) sin volver a correr los análisis. Basta con citar las rutas relativas.
:::
