Tarea 3: Clasificación avanzada con tidymodels

IA para Científicos Sociales - UCU

Autor/a

Danilo Freire

Fecha de publicación

13 de abril de 2026

1 Instrucciones

Esta tarea usa el dataset del Laboratorio 3 (latinobarometro_sim.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 latinobarometro_sim.csv de la página del curso, o clonen el repositorio completo con git clone https://github.com/danilofreire/introduccion-ia-ucu.git
  2. Necesitan Quarto 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

1.1 Configuración

library(tidymodels)
library(tidyverse)
library(ranger)
library(vip)
library(pdp)
library(xgboost)

set.seed(2026)

datos <- read_csv("datos/latinobarometro_sim.csv", show_col_types = FALSE)

datos <- datos |>
  mutate(
    pais = factor(pais),
    zona = factor(zona),
    genero = factor(genero),
    uso_internet = factor(uso_internet, levels = c("nunca", "semanal", "diario")),
    voto = factor(voto, levels = c("si", "no"))
  )

2 Exploración

2.1 Pregunta 1: Participación electoral por grupos

Calculen la proporción de votantes (voto == "si") por zona (urbana/rural) y por género. Muestren los resultados en una tabla. ¿Hay diferencias entre los grupos?

# Escriban su código aquí

Respuesta:

2.2 Pregunta 2: Correlaciones entre predictores

Calculen la matriz de correlaciones entre las variables numéricas: edad, educacion_anios, ingreso_hogar, confianza_gobierno, confianza_justicia, satisfaccion_democracia, percepcion_economia, interes_politica y satisfaccion_vida. ¿Cuáles dos variables tienen la mayor correlación? ¿Tiene sentido teórico?

# Escriban su código aquí

Respuesta:

2.3 Pregunta 3: Distribución de edad por voto

Creen un boxplot que muestre la distribución de edad separada por voto. Agreguen labs() con título y etiquetas claras. ¿Los votantes tienden a ser mayores o menores que los no votantes?

# Escriban su código aquí

Respuesta:

3 Modelos base

3.1 Pregunta 4: Modelo reducido

Dividan los datos en 75% entrenamiento y 25% prueba con set.seed(2026) y estratificación por voto. Luego ajusten una regresión logística usando solo tres predictores: edad, educacion_anios e interes_politica. Calculen la accuracy y el AUC sobre el conjunto de prueba. ¿Cómo se compara con el modelo completo del laboratorio?

Pista: usen la misma estructura de recipe() + workflow() del laboratorio, pero con menos variables en la fórmula.

# Escriban su código aquí

Respuesta:

3.2 Pregunta 5: Coeficientes e interpretación

Usando el modelo logístico completo (con todos los predictores del laboratorio), extraigan los coeficientes con tidy() y calculen los odds ratios (exp(estimate)). ¿Cuál variable tiene el efecto más fuerte sobre la probabilidad de votar? ¿Cuál tiene un efecto negativo?

# Escriban su código aquí

Respuesta:

4 Random Forest y tuning

4.1 Pregunta 6: Efecto del número de árboles

Entrenen tres modelos de Random Forest con 100, 500 y 1000 árboles respectivamente (usando mtry = 4 y min_n = 10 fijos, sin tuning). Calculen el AUC de cada modelo sobre el conjunto de prueba. ¿Cuánto mejora el AUC al aumentar el número de árboles? ¿Vale la pena usar 1000?

# Escriban su código aquí

Respuesta:

4.2 Pregunta 7: Grilla aleatoria vs. regular

En el laboratorio usamos grid_regular() para crear la grilla de búsqueda. Ahora usen grid_random() con size = 20 para el mismo modelo de Random Forest con mtry y min_n a ajustar. Comparen el mejor AUC obtenido con cada tipo de grilla.

Pista: grid_random(mtry(range = c(2, 8)), min_n(range = c(5, 30)), size = 20).

# Escriban su código aquí

Respuesta:

4.3 Pregunta 8: Más folds de validación cruzada

Repitan el tuning de Random Forest del laboratorio pero con 10 folds en vez de 5. ¿El mejor modelo tiene los mismos hiperparámetros? ¿El error estándar (std_err) de las métricas es menor con más folds?

# Escriban su código aquí

Respuesta:

5 Interpretación

5.1 Pregunta 9: PDPs adicionales

Usando el modelo de Random Forest ajustado en el laboratorio, creen Partial Dependence Plots para confianza_gobierno y educacion_anios. Describan la relación que observan: ¿es lineal, tiene mesetas, tiene curvas?

# Escriban su código aquí

Respuesta:

5.2 Pregunta 10: VIP vs. coeficientes logísticos

Comparen el ranking de importancia del VIP (Random Forest, Gini) con el ranking de los coeficientes de la regresión logística (ordenados por valor absoluto del estadístico z). ¿Coinciden los dos rankings? ¿Por qué podrían diferir?

Pista: en tidy(), la columna statistic contiene el estadístico z.

# Escriban su código aquí

Respuesta:

6 Comparación de modelos

6.1 Pregunta 11: Agregar un árbol de decisión

Entrenen un modelo decision_tree() con cost_complexity = 0.01, tree_depth = 10 y min_n = 10. Calculen sus métricas (accuracy, AUC) sobre el conjunto de prueba y compárenlas con la regresión logística y el Random Forest. ¿Cuánto se pierde en rendimiento respecto al Random Forest?

# Escriban su código aquí

Respuesta:

6.2 Pregunta 12: Tabla comparativa completa

Creen una tabla que compare cuatro modelos (regresión logística, Random Forest, XGBoost y árbol de decisión) con las métricas: accuracy, AUC, precision, recall y F1-score. Usen bind_rows() para combinar y pivot_wider() para formatear.

Pista: para cada modelo, generen predicciones con predict() y predict(type = "prob"), luego calculen las métricas con metrics() y f_meas().

# Escriban su código aquí

Respuesta:

7 Reflexión

7.1 Pregunta 13: Recomendación para un tomador de decisiones

Imaginen que trabajan para un organismo electoral latinoamericano que quiere entender qué factores influyen en la participación electoral para diseñar campañas de movilización. ¿Qué modelo recomendarían de los cuatro que entrenaron? Consideren al menos tres criterios: rendimiento predictivo, interpretabilidad y utilidad para la toma de decisiones. Justifiquen su respuesta.

Respuesta:

Volver arriba