library(tidymodels)
library(tidyverse)
library(glmnet)
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"))
)
set.seed(2026)Tarea 4: Regresión y regularización
IA para Científicos Sociales - UCU
1 Instrucciones
Esta tarea usa el mismo dataset del Laboratorio 4 (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:
- Descarguen este archivo
.qmdy el datasetlatinobarometro_sim.csvde la página del curso, o clonen el repositorio completo congit clone https://github.com/danilofreire/introduccion-ia-ucu.git - 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/
- Abran este archivo
.qmden RStudio y ejecuten los bloques de código con Ctrl+Enter (o Cmd+Enter en Mac) - Cuando terminen, pueden renderizar el documento completo con el botón “Render” en RStudio
1.1 Configuración
2 Exploración
2.1 Pregunta 1: Resumen del dataset
Calculen la media y desviación estándar de satisfaccion_vida por país. Ordenen los resultados de mayor a menor media. Cuál país tiene la mayor satisfacción promedio? Cuál tiene la menor?
# Escriban su codigo aquiRespuesta:
2.2 Pregunta 2: Correlaciones con la variable objetivo
Calculen la correlación entre satisfaccion_vida y todas las variables numéricas del dataset (edad, educacion_anios, ingreso_hogar, confianza_gobierno, confianza_justicia, satisfaccion_democracia, percepcion_economia, interes_politica). Cuáles dos variables tienen la mayor correlación con la satisfacción? Son positivas o negativas?
# Escriban su codigo aquiRespuesta:
2.3 Pregunta 3: Distribución por zona
Creen un boxplot que muestre la distribución de satisfaccion_vida separada por zona (urbana/rural). Agreguen labs() con titulo y etiquetas claras. Hay diferencia entre zonas?
# Escriban su codigo aquiRespuesta:
3 Modelo baseline
3.1 Pregunta 4: División de datos y receta
Dividan los datos en 75% entrenamiento y 25% prueba con set.seed(2026). Creen una receta que: (a) excluya voto y pais, (b) convierta las variables categóricas en dummies, (c) normalice los predictores numéricos, y (d) elimine predictores con varianza cero. Cuántos predictores tiene la receta preparada?
# Escriban su codigo aquiRespuesta:
3.2 Pregunta 5: Modelo OLS
Ajusten un modelo de regresión lineal (OLS) con linear_reg() usando la receta de la pregunta 4. Extraigan los coeficientes con tidy() y ordénenlos por valor absoluto. Cuál es el predictor más importante? Cuál es el menos importante?
# Escriban su codigo aquiRespuesta:
3.3 Pregunta 6: Evaluar OLS
Generen predicciones del modelo OLS en el conjunto de prueba y calculen RMSE, R² y MAE con metrics(). Qué porcentaje de la variación en satisfacción explica el modelo (R²)?
# Escriban su codigo aquiRespuesta:
4 LASSO
4.1 Pregunta 7: Tuning de LASSO
Definan un modelo LASSO (mixture = 1) con penalty = tune(). Creen una grilla de 30 valores de lambda entre 10^-4 y 10^0. Usen validación cruzada con 10 folds para encontrar el lambda óptimo. Cuál es el mejor lambda según RMSE?
# Escriban su codigo aquiRespuesta:
4.2 Pregunta 8: Lambda mínimo vs. 1SE
Comparen el lambda que minimiza el RMSE (select_best()) con el lambda 1SE (select_by_one_std_err()). Cuál es más grande? Cuántas veces más grande? Qué implica usar el lambda 1SE para la complejidad del modelo?
# Escriban su codigo aquiRespuesta:
4.3 Pregunta 9: Variables eliminadas por LASSO
Ajusten el modelo LASSO final con el lambda mínimo. Cuántas variables elimina LASSO (coeficiente = 0)? Cuáles son? Por qué creen que LASSO las considera poco útiles?
# Escriban su codigo aquiRespuesta:
5 Ridge y Elastic Net
5.1 Pregunta 10: Comparar coeficientes Ridge vs. LASSO
Ajusten un modelo Ridge (mixture = 0) con tuning de lambda usando la misma grilla y los mismos folds. Comparen los coeficientes de Ridge con los de LASSO. Cuál de los dos tiene coeficientes más grandes en promedio? Por qué?
# Escriban su codigo aquiRespuesta:
5.2 Pregunta 11: Elastic Net con dos hiperparámetros
Ajusten un Elastic Net con tuning de penalty y mixture. Usen una grilla de 15 lambdas y 5 valores de mixture. Cuál es la mejor combinación? El mixture óptimo se acerca más a LASSO (1) o a Ridge (0)?
# Escriban su codigo aquiRespuesta:
6 Comparación
6.1 Pregunta 12: Tabla comparativa
Generen predicciones en el conjunto de prueba para OLS, LASSO, Ridge, Elastic Net y Random Forest (con trees = 500, mtry = tune(), min_n = tune()). Combinen las métricas en una tabla y ordénenla por RMSE. Cuál modelo tiene el mejor RMSE? Cuál tiene el mejor R²?
# Escriban su codigo aquiRespuesta:
6.2 Pregunta 13: Reflexión
Basandose en los resultados de esta tarea, respondan:
- En este dataset, la regularización mejora mucho respecto a OLS? Por qué sí o por qué no?
- En qué situaciones sería más útil LASSO que Ridge? Y viceversa?
- Si tuvieran que presentar resultados a un tomador de decisiones que no sabe estadística, cuál modelo elegirían y por qué?
Respuesta: