LoslegenKostenlos starten

Eingabetransformationen: der „Hockeyschläger“

In dieser Übung bauen wir ein Modell, das den Preis aus einem Maß für die Hausgröße (Grundfläche) vorhersagt. Der Datensatz houseprice, bereits für dich geladen, hat die Spalten:

  • price: Hauspreis in Einheiten von 1.000 $
  • size: Grundfläche

Ein Streudiagramm der Daten zeigt eine deutlich nichtlineare Struktur: eine Art „Hockeyschläger“, bei dem der Preis für kleinere Häuser relativ flach verläuft, aber stark ansteigt, sobald das Haus größer wird. Quadratische und kubische Terme sind oft gute funktionale Formen, um solche Hockeyschläger-Beziehungen auszudrücken. Beachte, dass es keinen „physikalischen“ Grund geben muss, warum price mit dem Quadrat von size zusammenhängt; ein quadratischer Term ist einfach eine geschlossene Näherung an die beobachtete Beziehung.

scatterplot

Du passt ein Modell an, das den Preis als Funktion der quadrierten Größe vorhersagt, und schaust dir dessen Anpassung auf den Trainingsdaten an.

Da ^ auch ein Symbol ist, um Interaktionen auszudrücken, verwende die Funktion I() (docs), um den Ausdruck x^2 „as is“ zu behandeln: also als Quadrat von x und nicht als Interaktion von x mit sich selbst.

exampleFormula = y ~ I(x^2)

Diese Übung ist Teil des Kurses

<Kurs>Überwachtes Lernen in R: Regression</Kurs>
Kurs ansehen

Übungsanweisungen

  • Schreibe eine Formel fmla_sqr, um den Preis als Funktion der quadrierten Größe auszudrücken. Gib sie aus.
  • Passe ein Modell model_sqr an die Daten mit fmla_sqr an.
  • Zum Vergleich: Passe ein lineares Modell model_lin mit der Formel price ~ size an.
  • Ergänze die Lücken, um
    • Vorhersagen der beiden Modelle auf den Trainingsdaten zu erzeugen,
    • die Vorhersagen mit pivot_longer() in eine einzelne Spalte pred zu pivotieren,
    • die Vorhersagen der beiden Modelle grafisch mit den Daten zu vergleichen. Welches passt besser?

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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")
Code bearbeiten und ausführen