Kom igångKom igång gratis

Inputtransformeringar: "hockeyklubban"

I den här övningen bygger vi en modell för att förutsäga pris utifrån ett mått på husets storlek (yta). Datamängden houseprice, som redan är inläst, innehåller följande kolumner:

  • price: huspris i enheter om 1 000 dollar
  • size: yta

Ett spridningsdiagram visar att datan är tydligt icke-linjär: en sorts "hockeyklubba" där priset är relativt stabilt för mindre hus men stiger brant när huset blir större. Kvadratiska och kubiska funktioner är ofta lämpliga funktionsformer för att beskriva hockeyklubbeliknande samband. Observera att det inte behöver finnas något "fysikaliskt" skäl till att price är relaterat till kvadraten av size – en kvadratisk funktion är helt enkelt en sluten approximation av det observerade sambandet.

scatterplot

Du ska anpassa en modell för att förutsäga pris som en funktion av kvadraten av ytan och sedan granska hur väl den passar träningsdatan.

Eftersom ^ även används för att uttrycka interaktioner, använd funktionen I() (docs) för att tolka uttrycket x^2 "som det är": det vill säga som kvadraten av x, snarare än interaktionen av x med sig självt.

exampleFormula = y ~ I(x^2)

Den här övningen är en del av kursen

Övervakad inlärning i R: Regression

Visa kurs

Övningsinstruktioner

  • Skriv en formel, fmla_sqr, som uttrycker pris som en funktion av kvadraten av ytan. Skriv ut den.
  • Anpassa en modell model_sqr till datan med hjälp av fmla_sqr.
  • Anpassa för jämförelse en linjär modell model_lin till datan med formeln price ~ size.
  • Fyll i luckorna för att
    • göra förutsägelser från träningsdatan med de två modellerna
    • slå ihop förutsägelserna till en enda kolumn pred med hjälp av pivot_longer()
    • jämföra de två modellernas förutsägelser med datan grafiskt. Vilken passar bäst?

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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")
Redigera och kör kod