Předpovědi sójového modelu na testovacích datech
V tomto cvičení aplikuješ sójové modely z předchozího cvičení (model.lin a model.gam, již načtené) na nová data: soybean_test.
Toto cvičení je součástí kurzu
Supervised Learning in R: Regression
Pokyny k cvičení
- Vytvoř sloupec
soybean_test$pred.lins předpověďmi z lineárního modelumodel.lin. - Vytvoř sloupec
soybean_test$pred.gams předpověďmi z GAM modelumodel.gam.- U GAM modelů vrací metoda
predict()matici, proto ji pomocías.numeric()převeď na vektor.
- U GAM modelů vrací metoda
- Doplň chybějící části a pomocí
pivot_longer()převeď sloupce s předpověďmi do jediného hodnotového sloupcepreds klíčovým sloupcemmodeltype. Výsledný dlouhý datový rámec pojmenujsoybean_long. - Vypočítej a porovnej RMSE obou modelů.
- Který model si vede lépe?
- Spusť kód a porovnej předpovědi každého modelu se skutečnými průměrnými hmotnostmi listů.
- Bodový graf
weightjako funkceTime. - Bodovo-čárové grafy předpovědí (
pred) jako funkceTime. - Všimni si, že lineární model někdy předpovídá záporné hmotnosti! Dělá to i GAM model?
- Bodový graf
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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")