R-squared berekenen
Nu je de RMSE van de voorspellingen van je model hebt berekend, ga je onderzoeken hoe goed het model op de data past: met andere woorden, hoeveel variantie het verklaart. Dat kan met \(R^2\).
Stel dat \(y\) de echte uitkomst is, \(p\) de voorspelling van het model, en \(res = y - p\) de residuen van de voorspellingen zijn.
Dan is de total sum of squares \(tss\) ("totale variantie") van de data:
$$ tss = \sum{(y - \overline{y})^2} $$
waarbij \(\overline{y}\) de gemiddelde waarde van \(y\) is.
De residual sum of squared errors van het model, \(rss\), is: $$ rss = \sum{res^2} $$
\(R^2\) (R-squared), de "verklaarde variantie" door het model, is dan:
$$ 1 - \frac{rss}{tss} $$
Nadat je \(R^2\) hebt berekend, vergelijk je jouw uitkomst met de \(R^2\) die wordt gerapporteerd door glance() (docs). glance() geeft een data frame met één rij terug; voor een lineair regressiemodel is een van de kolommen de \(R^2\) van het model op de trainingsdata.
Het unemployment-data frame is voor je geladen en bevat de kolommen predictions en residuals die je in een vorige oefening hebt berekend. Het unemployment_model is ook beschikbaar om te gebruiken.
Deze oefening maakt deel uit van de cursus
Supervised Learning in R: Regressie
Oefeninstructies
- Bereken het gemiddelde van
female_unemploymenten ken dit toe aan de variabelefe_mean. - Bereken de total sum of squares en ken dit toe aan de variabele
tss. - Bereken de residual sum of squares en ken dit toe aan de variabele
rss. - Bereken \(R^2\). Is dit een goede fit (\(R^2\) dicht bij 1)?
- Gebruik
glance()om \(R^2\) uit het model te halen. Is dit hetzelfde als wat jij hebt berekend?
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# unemployment is available
summary(unemployment)
# unemployment_model is available
summary(unemployment_model)
# Calculate and print the mean female_unemployment: fe_mean
(fe_mean <- ___)
# Calculate and print the total sum of squares: tss
(tss <- ___((___ - ___)^2))
# Calculate and print residual sum of squares: rss
(rss <- ___)
# Calculate and print the R-squared: rsq
(rsq <- ___)
# Get R-squared from glance and print it
(rsq_glance <- ___(___)$___)