CommencerCommencez gratuitement

Modéliser une interaction (2)

Dans cet exercice, vous allez comparer les performances du modèle avec interaction ajusté à l’exercice précédent à celles d’un modèle ne contenant que des effets principaux. Comme ce jeu de données est de petite taille, nous utiliserons la validation croisée pour simuler des prédictions sur des données hors échantillon.

Vous allez commencer à utiliser le package dplyr pour effectuer des calculs.

  • mutate() (docs) ajoute de nouvelles colonnes à un tbl (un type de data frame)
  • group_by() (docs) définit la façon dont les lignes sont regroupées dans un tbl
  • summarize() (docs) calcule des statistiques récapitulatives sur une colonne

Vous utiliserez aussi pivot_longer() de tidyr (docs), qui prend plusieurs colonnes et les transforme en paires clé–valeur. Le data frame alcohol et les formules fmla_add et fmla_interaction ont été préchargés.

Cet exercice fait partie du cours

<cours>Apprentissage supervisé en R : Régression</cours>
Voir le cours

Instructions de l’exercice

  • Utilisez kWayCrossValidation() (docs) pour créer un plan de découpage pour une validation croisée à 3 plis.
    • Le premier argument est le nombre de lignes à répartir.
    • Le deuxième argument est le nombre de plis pour la validation croisée.
    • Vous pouvez définir le 3ᵉ et le 4ᵉ argument de la fonction à NULL.
  • Examinez et exécutez l’exemple de code pour obtenir les prédictions en validation croisée 3 plis d’un modèle sans interactions et affectez-les à la colonne pred_add.
  • Obtenez les prédictions en validation croisée 3 plis du modèle avec interactions. Affectez les prédictions à la colonne pred_interaction.
    • Le code d’exemple vous montre la procédure.
    • Utilisez le même splitPlan que vous avez déjà créé.
  • Complétez les blancs pour
    • appliquer pivot_longer afin de rassembler les prédictions dans une seule colonne pred.
    • ajouter une colonne de résidus (résultat observé − résultat prédit).
    • calculer la RMSE des prédictions en validation croisée pour chaque type de modèle.
  • Comparez les RMSE. D’après ces résultats, quel modèle devriez-vous utiliser ?

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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 = ___(___(___)))
Modifier et exécuter le code