IniziaInizia gratis

Trasformazioni degli input: la "mazza da hockey"

In questo esercizio costruiremo un modello per prevedere il prezzo a partire da una misura della dimensione della casa (superficie). Il dataset houseprice, già caricato, contiene le colonne:

  • price: prezzo della casa in unità di $1000
  • size: superficie

Uno scatter plot dei dati mostra una marcata non linearità: una sorta di "mazza da hockey" in cui il prezzo è piuttosto piatto per le case più piccole, ma cresce rapidamente all’aumentare della dimensione. Le funzioni quadratiche e cubiche sono spesso buone forme funzionali per esprimere relazioni di tipo "mazza da hockey". Nota che potrebbe non esserci una ragione "fisica" per cui price sia legato al quadrato di size; un quadratico è semplicemente un’approssimazione in forma chiusa della relazione osservata.

scatterplot

Adatterai un modello per prevedere il prezzo in funzione della dimensione al quadrato e valuterai il suo adattamento sui dati di training.

Poiché ^ è anche un simbolo per esprimere interazioni, usa la funzione I() (docs) per trattare l’espressione x^2 “as is”: cioè come il quadrato di x, invece che come l’interazione di x con se stessa.

exampleFormula = y ~ I(x^2)

Questo esercizio fa parte del corso

Supervised Learning in R: Regression

Visualizza il corso

Istruzioni dell'esercizio

  • Scrivi una formula, fmla_sqr, per esprimere il prezzo in funzione della dimensione al quadrato. Stampala.
  • Adatta un modello model_sqr ai dati usando fmla_sqr.
  • Per confronto, adatta un modello lineare model_lin ai dati usando la formula price ~ size.
  • Compila gli spazi vuoti per
    • ottenere le previsioni sui dati di training dai due modelli
    • rimodellare le previsioni in un’unica colonna pred usando pivot_longer().
    • confrontare graficamente le previsioni dei due modelli con i dati. Quale si adatta meglio?

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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")
Modifica ed esegui il codice