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 tblsummarize()(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>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
splitPlanque vous avez déjà créé.
- Complétez les blancs pour
- appliquer
pivot_longerafin de rassembler les prédictions dans une seule colonnepred. - 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.
- appliquer
- 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 = ___(___(___)))