---
title: "Tarea 2: Comparación de modelos con tidymodels"
subtitle: "IA para Científicos Sociales - UCU"
author: "Danilo Freire"
date: "2026-04-12"
format:
  html:
    toc: true
    toc-depth: 2
    number-sections: true
    code-fold: false
lang: es
engine: knitr
---

## Instrucciones

Esta tarea usa el dataset del Laboratorio 2 (`satisfaccion_democracia.csv`). Respondan cada pregunta escribiendo código R en los bloques indicados. Cuando se pida una respuesta escrita, usen texto normal debajo del bloque de código.

**Para trabajar en esta tarea:**

1. Descarguen este archivo `.qmd` y el dataset `satisfaccion_democracia.csv` de la [página del curso](https://danilofreire.github.io/introduccion-ia-ucu/laboratorios.html), o clonen el repositorio completo con `git clone https://github.com/danilofreire/introduccion-ia-ucu.git`
2. Necesitan [Quarto](https://quarto.org/docs/get-started/) instalado junto con RStudio. Las versiones recientes de RStudio (>= 2022.07) ya incluyen Quarto. Si no lo tienen, instálenlo desde <https://quarto.org/docs/get-started/>
3. Abran este archivo `.qmd` en RStudio y ejecuten los bloques de código con Ctrl+Enter (o Cmd+Enter en Mac)
4. Cuando terminen, pueden renderizar el documento completo con el botón "Render" en RStudio

### Configuración

```{r setup, message=FALSE, warning=FALSE}
library(tidymodels)
library(tidyverse)

satisfaccion <- read_csv("datos/satisfaccion_democracia.csv")

satisfaccion <- satisfaccion |>
  mutate(
    satisfecho = factor(satisfecho, levels = c("no", "si")),
    zona = factor(zona),
    genero = factor(genero),
    pais = factor(pais)
  )
```

## Exploración

### Pregunta 1: Resumen del dataset

Calculen la proporción de satisfechos (`"si"`) por país. Cuál país tiene la proporción más alta? Cuál tiene la más baja? Muestren los resultados en una tabla ordenada.

```{r p1}
# Escriban su codigo aqui

```

**Respuesta:**

### Pregunta 2: Confianza y satisfacción

Creen un boxplot que muestre la distribución de `confianza_gobierno` separada por `satisfecho`. Agreguen `labs()` con titulo y etiquetas claras. Qué observan?

```{r p2}
# Escriban su codigo aqui

```

**Respuesta:**

### Pregunta 3: Correlaciones

Calculen la matriz de correlaciones entre las 4 variables numéricas principales: `edad`, `educacion_anos`, `ingreso_hogar` y `confianza_gobierno`. Cuáles dos variables tienen la mayor correlación? Es fuerte o débil?

```{r p3}
# Escriban su codigo aqui

```

**Respuesta:**

## Feature engineering

### Pregunta 4: Crear variables nuevas

Creen tres variables nuevas:

- `confianza_baja`: `"si"` si `confianza_gobierno <= 4`, `"no"` en caso contrario
- `joven`: `"si"` si `edad < 30`, `"no"` en caso contrario
- `ingreso_x_educacion`: el producto de `ingreso_hogar` y `educacion_anos`

Muestren las primeras 10 filas de las nuevas variables junto con `satisfecho`.

```{r p4}
# Escriban su codigo aqui

```

### Pregunta 5: Explorar las nuevas variables

Calculen la proporción de satisfechos entre personas con confianza baja vs. alta, y entre jovenes vs. no jovenes. Qué variable parece más útil para predecir la satisfacción?

```{r p5}
# Escriban su codigo aqui

```

**Respuesta:**

## Modelos

### Pregunta 6: División de datos

Dividan los datos en 75% entrenamiento y 25% prueba con `set.seed(42)` y estratificación por `satisfecho`. Verifiquen que las proporciones del outcome son similares en ambos conjuntos.

```{r p6}
# Escriban su codigo aqui

```

### Pregunta 7: Tres modelos con fórmula básica

Definan tres modelos (regresión logística, árbol de decisión y KNN con k=5) y evaluenlos con validación cruzada (5 folds) usando la fórmula: `satisfecho ~ edad + educacion_anos + ingreso_hogar + confianza_gobierno + consumo_noticias + participacion_politica + zona`. Reporten accuracy para cada uno.

*Pista:* usen `control_resamples(event_level = "second")` dentro de `fit_resamples()`.

```{r p7}
# Escriban su codigo aqui

```

**Respuesta:**

### Pregunta 8: Mejor modelo con fórmula extendida

Ahora evaluen el mejor modelo de la pregunta anterior con una fórmula que agregue `confianza_baja` y `ingreso_x_educacion`. Mejora la accuracy? Cuánto?

```{r p8}
# Escriban su codigo aqui

```

**Respuesta:**

## Evaluación

### Pregunta 9: Matriz de confusión

Ajusten el modelo logístico con la fórmula básica en los datos de entrenamiento y generen predicciones sobre el conjunto de prueba. Construyan la matriz de confusión. Cuántos errores comete el modelo en total?

```{r p9}
# Escriban su codigo aqui

```

**Respuesta:**

### Pregunta 10: Precisión, recall y AUC

Calculen precisión, recall y AUC del modelo logístico sobre el conjunto de prueba. Recuerden usar `event_level = "second"`. Es un buen modelo según el AUC?

```{r p10}
# Escriban su codigo aqui

```

**Respuesta:**

### Pregunta 11: Curva ROC

Grafiquen la curva ROC del modelo logístico. Agreguen un titulo al gráfico con `labs()`.

```{r p11}
# Escriban su codigo aqui

```

### Pregunta 12: Coeficientes del modelo

Extraigan los coeficientes del modelo logístico con `tidy()` y calculen los odds ratios. Cuál variable tiene el efecto más fuerte? Cuál tiene el efecto más débil? Ordenen por p-valor.

```{r p12}
# Escriban su codigo aqui

```

**Respuesta:**

## Reflexion

### Pregunta 13: Árbol vs. logística

Los árboles de decisión y la regresión logística tienen ventajas y desventajas distintas. Basandose en los resultados del laboratorio, discutan en que situaciones preferirían un árbol de decisión sobre una regresión logística, y viceversa. Consideren al menos dos criterios (por ejemplo, interpretabilidad, rendimiento, tipo de datos).

**Respuesta:**
