EmpezarEmpieza gratis

Modelar una interacción (2)

En este ejercicio, vas a comparar el rendimiento del modelo con interacción que ajustaste en el ejercicio anterior con el de un modelo solo con efectos principales. Como este conjunto de datos es pequeño, usaremos validación cruzada para simular predicciones sobre datos fuera de muestra.

Empezarás a usar el paquete dplyr para hacer cálculos.

  • mutate() (docs) añade nuevas columnas a una tbl (un tipo de data frame)
  • group_by() (docs) indica cómo se agrupan las filas en una tbl
  • summarize() (docs) calcula estadísticas resumen de una columna

También usarás pivot_longer() de tidyr (docs), que toma varias columnas y las convierte en pares clave-valor. El data frame alcohol y las fórmulas fmla_add y fmla_interaction ya están precargados.

Este ejercicio forma parte del curso

Aprendizaje supervisado en R: Regresión

Ver curso

Instrucciones del ejercicio

  • Usa kWayCrossValidation() (docs) para crear un plan de particionado para una validación cruzada de 3 particiones.
    • El primer argumento es el número de filas a dividir.
    • El segundo argumento es el número de particiones para la validación cruzada.
    • Puedes establecer el 3.º y 4.º argumentos de la función como NULL.
  • Examina y ejecuta el código de ejemplo para obtener las predicciones de validación cruzada de 3 particiones de un modelo sin interacciones y asígnalas a la columna pred_add.
  • Obtén las predicciones de validación cruzada de 3 particiones del modelo con interacciones. Asigna las predicciones a la columna pred_interaction.
    • El código de muestra te muestra el procedimiento.
    • Usa el mismo splitPlan que ya creaste.
  • Rellena los espacios en blanco para
    • pivot_longer las predicciones en una sola columna pred.
    • añadir una columna de residuos (resultado real - resultado predicho).
    • obtener el RMSE de las predicciones de validación cruzada para cada tipo de modelo.
  • Compara los RMSE. Con base en estos resultados, ¿qué modelo deberías usar?

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# alcohol is available
summary(alcohol)

# Both the formulae are available
fmla_add
fmla_interaction

# Create the splitting plan for 3-fold cross validation
set.seed(34245)  # set the seed for reproducibility
splitPlan <- ___(___(___), ___, ___, ___)

# Sample code: Get cross-val predictions for main-effects only model
alcohol$pred_add <- 0  # initialize the prediction vector
for(i in 1:3) {
  split <- splitPlan[[i]]
  model_add <- lm(fmla_add, data = alcohol[split$train, ])
  alcohol$pred_add[split$app] <- predict(model_add, newdata = alcohol[split$app, ])
}

# Get the cross-val predictions for the model with interactions
alcohol$pred_interaction <- 0 # initialize the prediction vector
for(i ___ ___) {
  split <- ___
  model_interaction <- lm(___, data = alcohol[split$train, ])
  alcohol$___[split$app] <- predict(___, newdata = alcohol[split$app, ])
}

# Get RMSE
alcohol %>% 
  pivot_longer(cols=c('pred_add', 'pred_interaction'), names_to='modeltype', values_to='pred') %>%
  mutate(residuals = ____) %>%      
  group_by(modeltype) %>%
  summarize(rmse = ___(___(___)))
Editar y ejecutar código