IniziaInizia gratis

Confrontare RMSE e root-mean-squared Relative Error

In questo esercizio mostrerai che applicare il logaritmo a un output monetario prima di modellare migliora l’errore relativo medio (ma aumenta la RMSE) rispetto al modellare direttamente l’output monetario. Confronterai i risultati di model.log dell’esercizio precedente con un modello (model.abs) che stima direttamente il reddito.

I dataset income_train e income_test sono già caricati, insieme al tuo modello model.log.

Sono inoltre disponibili:

  • model.abs: un modello che adatta direttamente il reddito agli input usando la formula

    Income2005 ~ Arith + Word + Parag + Math + AFQT

Questo esercizio fa parte del corso

Supervised Learning in R: Regression

Visualizza il corso

Istruzioni dell'esercizio

  • Completa gli spazi vuoti per aggiungere a income_test le previsioni dei modelli.
    • Non dimenticare di fare l’esponenziale delle previsioni di model.log per annullare la trasformazione log!
  • Completa gli spazi vuoti per eseguire pivot_longer() sulle previsioni e calcolare i residui e l’errore relativo.
  • Completa gli spazi vuoti per calcolare la RMSE e la RMSE relativa delle previsioni.
    • Quale modello ha un errore assoluto maggiore? E un errore relativo maggiore?

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# fmla.abs is available
fmla.abs

# model.abs is available
summary(model.abs)

# Add predictions to the test set
income_test <- income_test %>%
  mutate(pred.absmodel = ___(___, income_test),        # predictions from model.abs
         pred.logmodel = ___(___(___, income_test)))   # predictions from model.log

# pivot_longer the predictions and calculate residuals and relative error
income_long <- income_test %>% 
  pivot_longer(names_to = 'modeltype', values_to = 'pred', cols=c('pred.absmodel', 'pred.logmodel')) %>%
  mutate(residual = ___,   # residuals
         relerr   = ___)   # relative error

# Calculate RMSE and relative RMSE and compare
income_long %>% 
  group_by(modeltype) %>%      # group by modeltype
  summarize(rmse     = ___,    # RMSE
            rmse.rel = ___)    # Root mean squared relative error
Modifica ed esegui il codice