НачатьНачать бесплатно

Вычисление R-квадрат

Теперь, когда вы вычислили RMSE для предсказаний модели, можно оценить, насколько хорошо модель описывает данные: то есть какую долю дисперсии она объясняет. Для этого используется метрика \(R^2\).

Пусть \(y\) — истинное значение целевой переменной, \(p\) — предсказание модели, а \(res = y - p\) — остатки (невязки) предсказаний.

Тогда полная сумма квадратов \(tss\) («общая дисперсия») данных равна:

$$ tss = \sum{(y - \overline{y})^2} $$

где \(\overline{y}\) — среднее значение \(y\).

Остаточная сумма квадратов модели \(rss\) равна: $$ rss = \sum{res^2} $$

\(R^2\) (R-квадрат) — «объяснённая дисперсия» модели — вычисляется как:

$$ 1 - \frac{rss}{tss} $$

После того как вы вычислите \(R^2\), сравните полученное значение с \(R^2\), которое возвращает функция glance() (документация). Функция glance() возвращает таблицу данных из одной строки; для модели линейной регрессии одним из столбцов является \(R^2\) модели на обучающих данных.

Таблица данных unemployment уже загружена и содержит столбцы predictions и residuals, вычисленные в предыдущем упражнении. Модель unemployment_model также доступна для использования.

Это упражнение является частью курса

Обучение с учителем в R: регрессия

Посмотреть курс

Инструкции к упражнению

  • Вычислите среднее значение female_unemployment и присвойте его переменной fe_mean.
  • Вычислите полную сумму квадратов и присвойте результат переменной tss.
  • Вычислите остаточную сумму квадратов и присвойте результат переменной rss.
  • Вычислите \(R^2\). Можно ли считать качество подгонки хорошим (\(R^2\) близко к 1)?
  • Используйте функцию glance(), чтобы получить \(R^2\) из модели. Совпадает ли оно с тем, что вы вычислили?

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# unemployment is available
summary(unemployment)

# unemployment_model is available
summary(unemployment_model)

# Calculate and print the mean female_unemployment: fe_mean
(fe_mean <- ___)

# Calculate and print the total sum of squares: tss
(tss <- ___((___ - ___)^2))

# Calculate and print residual sum of squares: rss
(rss <- ___)

# Calculate and print the R-squared: rsq
(rsq <- ___)

# Get R-squared from glance and print it
(rsq_glance <- ___(___)$___)
Редактировать и запускать код