Преобразование входных данных: «хоккейная клюшка»
В этом упражнении мы построим модель для предсказания цены на основе площади дома. Набор данных houseprice, уже загруженный для вас, содержит следующие столбцы:
price: цена дома в единицах $1000size: площадь поверхности
Диаграмма рассеяния показывает, что данные весьма нелинейны: зависимость напоминает «хоккейную клюшку» — цена почти не меняется для небольших домов, но резко возрастает по мере увеличения площади. Квадратичные и кубические функции часто хорошо описывают подобные зависимости. Обратите внимание: необязательно искать «физическое» объяснение тому, что price связана с квадратом size — квадратичная форма просто является удобным приближением наблюдаемой зависимости.

Вы подберёте модель, предсказывающую цену как функцию квадрата площади, и оцените её качество на обучающих данных.
Поскольку символ ^ также используется для обозначения взаимодействий, применяйте функцию I() (документация), чтобы выражение x^2 интерпретировалось «как есть» — то есть как квадрат x, а не как взаимодействие x с самим собой.
exampleFormula = y ~ I(x^2)
Это упражнение является частью курса
Обучение с учителем в R: регрессия
Инструкции к упражнению
- Запишите формулу
fmla_sqr, выражающую цену как функцию квадрата площади. Выведите её на экран. - Обучите модель
model_sqrна данных, используя формулуfmla_sqr. - Для сравнения обучите линейную модель
model_linна данных по формулеprice ~ size. - Заполните пропуски, чтобы:
- получить прогнозы обеих моделей на обучающих данных;
- объединить прогнозы в один столбец
predс помощьюpivot_longer(); - визуально сравнить прогнозы двух моделей с исходными данными. Какая из моделей лучше подходит?
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# houseprice is available
summary(houseprice)
# Create the formula for price as a function of squared size
(fmla_sqr <- ___)
# Fit a model of price as a function of squared size (use fmla_sqr)
model_sqr <- ___
# Fit a model of price as a linear function of size
model_lin <- ___
# Make predictions and compare
houseprice %>%
mutate(pred_lin = ___(___), # predictions from linear model
pred_sqr = ___(___)) %>% # predictions from quadratic model
pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>% # pivot the predictions
ggplot(aes(x = size)) +
geom_point(aes(y = ___)) + # actual prices
geom_line(aes(y = ___, color = modeltype)) + # the predictions
scale_color_brewer(palette = "Dark2")