Вычисление 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 <- ___(___)$___)