CommencezCommencez gratuitement

Transformations des intrants : la « crosse de hockey »

Dans cet exercice, vous allez construire un modèle pour prédire le prix à partir d'une mesure de la taille de la maison (sa superficie). Le jeu de données houseprice, déjà chargé, contient les colonnes suivantes :

  • price : prix de la maison en unités de 1 000 $
  • size : superficie

Un nuage de points des données montre une relation assez non linéaire : une sorte de « crosse de hockey » où le prix reste assez plat pour les petites maisons, puis augmente fortement à mesure que la maison devient plus grande. Les fonctions quadratiques et cubiques sont souvent de bonnes formes fonctionnelles pour exprimer ce type de relation. Notez qu'il n'y a peut‑être pas de raison « physique » pour que price soit lié au carré de size ; une quadratique est simplement une approximation analytique fermée de la relation observée.

scatterplot

Vous allez ajuster un modèle pour prédire le prix en fonction de la superficie au carré et examiner son ajustement sur les données d'entraînement.

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 plutôt que l'interaction de x avec lui‑même.

exampleFormula = y ~ I(x^2)

Cette activité fait partie du cours

Apprentissage supervisé en R : régression

Voir le cours

Instructions de l’exercice

  • Écrivez une formule, fmla_sqr, pour exprimer le prix en fonction de la superficie au carré. Affichez‑la.
  • Ajustez un modèle model_sqr aux données à l'aide de fmla_sqr.
  • Pour comparaison, ajustez un modèle linéaire model_lin aux données en utilisant la formule price ~ size.
  • Remplissez les espaces vides pour :
    • produire des prédictions sur les données d'entraînement pour les deux modèles
    • transformer les prédictions en 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