Зробіть передбачення моделлю soybean на тестових даних
У цій вправі ви застосуєте моделі для soybean з попередньої вправи (model.lin і model.gam, уже завантажені) до нових даних: soybean_test.
Ця вправа є частиною курсу
Кероване навчання в R: регресія
Інструкції до вправи
- Створіть стовпець
soybean_test$pred.linз передбаченнями лінійної моделіmodel.lin. - Створіть стовпець
soybean_test$pred.gamз передбаченнями моделі GAMmodel.gam.- Для моделей GAM метод
predict()повертає матрицю, тож скористайтесяas.numeric(), щоб перетворити матрицю на вектор.
- Для моделей GAM метод
- Заповніть пропуски, щоб за допомогою
pivot_longer()перетворити стовпці з передбаченнями на єдиний стовпець значеньpredіз ключовим стовпцемmodeltype. Назвіть довгий датафреймsoybean_long. - Обчисліть та порівняйте RMSE обох моделей.
- Яка модель краща?
- Запустіть код, щоб порівняти передбачення кожної моделі з фактичними середніми масами листків.
- Точкова діаграма
weightяк функціїTime. - Точково-лінійні графіки передбачень (
pred) як функціїTime. - Зверніть увагу, що лінійна модель інколи прогнозує відʼємні значення маси! А модель GAM?
- Точкова діаграма
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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")