IniziaInizia gratis

Fai previsioni con il modello della soia sui dati di test

In questo esercizio, applicherai i modelli di soia dell'esercizio precedente (model.lin e model.gam, già caricati) a nuovi dati: soybean_test.

Questo esercizio fa parte del corso

Supervised Learning in R: Regression

Visualizza il corso

Istruzioni dell'esercizio

  • Crea una colonna soybean_test$pred.lin con le previsioni del modello lineare model.lin.
  • Crea una colonna soybean_test$pred.gam con le previsioni del modello GAM model.gam.
    • Per i modelli GAM, il metodo predict() restituisce una matrice, quindi usa as.numeric() per convertire la matrice in un vettore.
  • Compila gli spazi vuoti per eseguire pivot_longer() sulle colonne delle previsioni in un'unica colonna di valori pred con chiave modeltype. Chiama il data frame in formato long soybean_long.
  • Calcola e confronta l'RMSE di entrambi i modelli.
    • Quale modello va meglio?
  • Esegui il codice per confrontare le previsioni di ciascun modello con i pesi medi effettivi delle foglie.
    • Uno scatter plot di weight in funzione di Time.
    • Grafici a punti e linee delle previsioni (pred) in funzione di Time.
    • Nota che il modello lineare a volte predice pesi negativi! Il modello GAM lo fa?

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# soybean_test is available
summary(soybean_test)

# Get predictions from linear model
soybean_test$pred.lin <- ___(___, newdata = ___)

# Get predictions from gam model
soybean_test$pred.gam <- ___(___(___, newdata = ___))

# Pivot the predictions into a "long" dataset
soybean_long <- soybean_test %>%
  pivot_longer(cols = c(___, ___), names_to = ___, values_to = ___)

# Calculate the rmse
soybean_long %>%
  mutate(residual = weight - pred) %>%     # residuals
  group_by(modeltype) %>%                  # group by modeltype
  summarize(rmse = ___(___(___))) # calculate the RMSE

# Compare the predictions against actual weights on the test data
soybean_long %>%
  ggplot(aes(x = Time)) +                          # the column for the x axis
  geom_point(aes(y = weight)) +                    # the y-column for the scatterplot
  geom_point(aes(y = pred, color = modeltype)) +   # the y-column for the point-and-line plot
  geom_line(aes(y = pred, color = modeltype, linetype = modeltype)) + # the y-column for the point-and-line plot
  scale_color_brewer(palette = "Dark2")
  
Modifica ed esegui il codice