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.

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>Übungsanweisungen
- Schreibe eine Formel
fmla_sqr, um den Preis als Funktion der quadrierten Größe auszudrücken. Gib sie aus. - Passe ein Modell
model_sqran die Daten mitfmla_sqran. - Zum Vergleich: Passe ein lineares Modell
model_linmit der Formelprice ~ sizean. - Ergänze die Lücken, um
- Vorhersagen der beiden Modelle auf den Trainingsdaten zu erzeugen,
- die Vorhersagen mit
pivot_longer()in eine einzelne Spaltepredzu 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")