Modéliser une interaction (2)
Dans cet exercice, vous comparerez la performance du modèle avec interaction que vous avez ajusté à l'exercice précédent à celle d'un modèle avec effets principaux seulement. Comme cet ensemble de données est petit, nous utiliserons la validation croisée pour simuler des prédictions sur des données hors échantillon.
Vous allez commencer à utiliser le paquet dplyr pour effectuer des calculs.
mutate()(docs) ajoute de nouvelles colonnes à un tbl (un type de trame de données)group_by()(docs) précise comment les lignes sont regroupées dans un tblsummarize()(docs) calcule des statistiques sommaires d'une colonne
Vous utiliserez aussi pivot_longer() de tidyr (docs), qui prend plusieurs colonnes et les rassemble en paires clé-valeur. La trame de données alcohol et les formules fmla_add et fmla_interaction ont été préchargées.
Cette activité fait partie du cours
Apprentissage supervisé en R : régression
Instructions de l’exercice
- Utilisez
kWayCrossValidation()(docs) pour créer un plan de découpage pour une validation croisée à 3 volets.- Le premier argument est le nombre de lignes à répartir.
- Le deuxième argument est le nombre de volets pour la validation croisée.
- Vous pouvez définir les 3e et 4e arguments de la fonction à
NULL.
- Examinez et exécutez l'exemple de code pour obtenir les prédictions de validation croisée à 3 volets d'un modèle sans interactions et affectez-les à la colonne
pred_add. - Obtenez les prédictions de validation croisée à 3 volets du modèle avec interactions. Attribuez les prédictions à la colonne
pred_interaction.- L'exemple de code vous montre la procédure.
- Utilisez le même
splitPlanque vous avez déjà créé.
- Remplissez les blancs pour
- appliquer
pivot_longerafin de rassembler les prédictions dans une seule colonnepred. - ajouter une colonne de résidus (résultat réel - résultat prédit).
- obtenir la RMSE des prédictions de 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 = ___(___(___)))