CommencerCommencez gratuitement

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.

scatterplot

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>
Voir le 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_sqr aux données en utilisant fmla_sqr.
  • Pour comparaison, ajustez un modèle linéaire model_lin aux données avec la formule price ~ 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 pred avec pivot_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")
Modifier et exécuter le code