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
Istruzioni dell'esercizio
- Crea una colonna
soybean_test$pred.lincon le previsioni del modello linearemodel.lin. - Crea una colonna
soybean_test$pred.gamcon le previsioni del modello GAMmodel.gam.- Per i modelli GAM, il metodo
predict()restituisce una matrice, quindi usaas.numeric()per convertire la matrice in un vettore.
- Per i modelli GAM, il metodo
- Compila gli spazi vuoti per eseguire
pivot_longer()sulle colonne delle previsioni in un'unica colonna di valoripredcon chiavemodeltype. Chiama il data frame in formato longsoybean_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
weightin funzione diTime. - Grafici a punti e linee delle previsioni (
pred) in funzione diTime. - Nota che il modello lineare a volte predice pesi negativi! Il modello GAM lo fa?
- Uno scatter plot di
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")