R-squared を計算する
モデルの予測について 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$(決定係数)は次の式で与えられます。
$$ 1 - \frac{rss}{tss} $$
\(R^2\) を計算したら、glance()(docs)が報告する \(R^2\) と比較します。glance() は 1 行のデータフレームを返し、線形回帰モデルの場合、その列の一つとして学習データに対するモデルの \(R^2\) が含まれます。
unemployment データフレームはすでに読み込まれており、前の演習で計算した predictions と residuals の列が含まれています。unemployment_model も利用可能です。
この演習はコースの一部です
R による Supervised Learning:回帰
演習の手順
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 <- ___(___)$___)