Calcolare R-squared
Ora che hai calcolato l'RMSE delle previsioni del tuo modello, verificherai quanto bene il modello si adatta ai dati: in altre parole, quanta varianza spiega. Puoi farlo usando \(R^2\).
Supponiamo che \(y\) sia il valore reale dell'output, \(p\) la previsione del modello e \(res = y - p\) i residui delle previsioni.
Allora la somma totale dei quadrati \(tss\) ("varianza totale") dei dati è:
$$ tss = \sum{(y - \overline{y})^2} $$
dove \(\overline{y}\) è il valore medio di \(y\).
La somma dei quadrati dei residui del modello, \(rss\), è: $$ rss = \sum{res^2} $$
\(R^2\) (R-squared), la "varianza spiegata" dal modello, è quindi:
$$ 1 - \frac{rss}{tss} $$
Dopo aver calcolato \(R^2\), confronterai il valore ottenuto con l'\(R^2\) riportato da glance() (docs). glance() restituisce un data frame con una sola riga; per un modello di regressione lineare, una delle colonne restituite è l'\(R^2\) del modello sui dati di training.
Il data frame unemployment è stato caricato per te e contiene le colonne predictions e residuals che hai calcolato in un esercizio precedente. Anche unemployment_model è a tua disposizione.
Questo esercizio fa parte del corso
Supervised Learning in R: Regression
Istruzioni dell'esercizio
- Calcola la media di
female_unemploymente assegnala alla variabilefe_mean. - Calcola la somma totale dei quadrati e assegnala alla variabile
tss. - Calcola la somma dei quadrati dei residui e assegnala alla variabile
rss. - Calcola \(R^2\). È un buon fit (con \(R^2\) vicino a 1)?
- Usa
glance()per ottenere l'\(R^2\) dal modello. È uguale a quello che hai calcolato tu?
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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 <- ___(___)$___)