ПочатиПочніть безкоштовно

Зробіть передбачення моделлю soybean на тестових даних

У цій вправі ви застосуєте моделі для soybean з попередньої вправи (model.lin і model.gam, уже завантажені) до нових даних: soybean_test.

Ця вправа є частиною курсу

Кероване навчання в R: регресія

Переглянути курс

Інструкції до вправи

  • Створіть стовпець soybean_test$pred.lin з передбаченнями лінійної моделі model.lin.
  • Створіть стовпець soybean_test$pred.gam з передбаченнями моделі GAM model.gam.
    • Для моделей GAM метод predict() повертає матрицю, тож скористайтеся as.numeric(), щоб перетворити матрицю на вектор.
  • Заповніть пропуски, щоб за допомогою 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")
  
Редагувати та запускати код