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

Перетворення вхідних даних: «клюшка»

У цій вправі ви побудуєте модель для прогнозування ціни за мірою розміру будинку (площа). Набір даних houseprice уже завантажено; він містить стовпці:

  • price: ціна будинку в одиницях $1000
  • size: площа

Точкова діаграма показує, що залежність помітно нелінійна: своєрідна «клюшка», де ціна майже не змінюється для менших будинків, але різко зростає зі збільшенням розміру. Квадратичні та кубічні моделі часто добре описують такі „клюшкоподібні" залежності. Зверніть увагу, що може не бути «фізичної» причини, чому price пов'язана з квадратом size; квадратична форма — це просто замкнена апроксимація спостережуваної залежності.

scatterplot

Ви навчите модель, що прогнозує ціну як функцію квадрата площі, і переглянете її відповідність тренувальним даним.

Оскільки ^ також використовується для задання взаємодій, скористайтеся функцією I() (docs), щоб трактувати вираз 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")
Редагувати та запускати код