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 $1000size: 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.

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
Istruzioni dell'esercizio
- Scrivi una formula,
fmla_sqr, per esprimere il prezzo in funzione della dimensione al quadrato. Stampala. - Adatta un modello
model_sqrai dati usandofmla_sqr. - Per confronto, adatta un modello lineare
model_linai dati usando la formulaprice ~ size. - Compila gli spazi vuoti per
- ottenere le previsioni sui dati di training dai due modelli
- rimodellare le previsioni in un’unica colonna
predusandopivot_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")