Transformations des entrées : la « crosse de hockey »
Dans cet exercice, nous allons construire un modèle pour prédire le prix à partir d'une mesure de la taille de la maison (surface). Le jeu de données houseprice, déjà chargé, comporte les colonnes :
price: prix de la maison en unités de 1 000 $size: surface
Un nuage de points montre que la relation est très non linéaire : une sorte de « crosse de hockey » où le prix est assez plat pour les petites maisons, mais augmente fortement lorsque la maison devient plus grande. Les polynômes quadratiques et cubiques sont souvent de bonnes formes fonctionnelles pour représenter ce type de relation. Notez qu'il n'y a pas forcément de raison « physique » pour que price soit lié au carré de size ; un quadratique est simplement une approximation en forme fermée de la relation observée.

Vous allez ajuster un modèle pour prédire le prix en fonction de la taille au carré, puis examiner son ajustement sur les données d'apprentissage.
Comme ^ est aussi un symbole pour exprimer des interactions, utilisez la fonction I() (docs) pour traiter l'expression x^2 « telle quelle » : c'est-à-dire comme le carré de x, et non comme l'interaction de x avec lui-même.
exampleFormula = y ~ I(x^2)
Cet exercice fait partie du cours
<cours>Apprentissage supervisé en R : Régression</cours>Instructions de l’exercice
- Écrivez une formule,
fmla_sqr, pour exprimer le prix en fonction de la taille au carré. Affichez-la. - Ajustez un modèle
model_sqraux données en utilisantfmla_sqr. - Pour comparaison, ajustez un modèle linéaire
model_linaux données avec la formuleprice ~ size. - Complétez les blancs pour :
- générer les prédictions sur les données d'entraînement à partir des deux modèles ;
- réorganiser les prédictions dans une seule colonne
predavecpivot_longer(); - comparer graphiquement les prédictions des deux modèles aux données. Lequel s'ajuste le mieux ?
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# houseprice is available
summary(houseprice)
# Create the formula for price as a function of squared size
(fmla_sqr <- ___)
# Fit a model of price as a function of squared size (use fmla_sqr)
model_sqr <- ___
# Fit a model of price as a linear function of size
model_lin <- ___
# Make predictions and compare
houseprice %>%
mutate(pred_lin = ___(___), # predictions from linear model
pred_sqr = ___(___)) %>% # predictions from quadratic model
pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>% # pivot the predictions
ggplot(aes(x = size)) +
geom_point(aes(y = ___)) + # actual prices
geom_line(aes(y = ___, color = modeltype)) + # the predictions
scale_color_brewer(palette = "Dark2")