始める無料で始める

R-squared

以前、もう一つの当てはまりの指標である R-squared を、RSS と VAR の比として表しました。分子・分母の両方に 1/n を掛けると、数値的には、モデルの残差の分散を、私たちがモデル化しているデータの線形トレンドの分散で割った比として解釈できます。これは、(線形トレンドを取り除いた後の)残差の広がりや分散と対比して、モデルがデータの分散をどれだけ「説明しているか」を表す指標です。

ここでは、最適フィットのモデルに対するデータ x_datay_data とモデル予測 y_model をあらかじめ読み込んであります。目的は、この線形モデルがデータのばらつきをどれだけ説明できているかを定量化するために、R-squared を計算することです。

この演習はコースの一部です

Pythonで学ぶ線形モデリング入門

コースを見る

演習の手順

  • residualsy_model から y_data を引いて計算し、deviationsy_datanp.mean() から y_data を引いて計算します。
  • residuals の分散と deviations の分散を、それぞれ np.mean()np.square() を用いて計算します。
  • r_squared を 1 から var_residuals / var_deviations を引いた値として計算し、結果を出力してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Compute the residuals and the deviations
residuals = ____ - y_data
deviations = np.____(____) - y_data

# Compute the variance of the residuals and deviations
var_residuals = np.____(np.____(____))
var_deviations = np.____(np.____(____))

# Compute r_squared as 1 - the ratio of RSS/Variance
r_squared = 1 - (____ / ____)
print('R-squared is {:0.2f}'.format(____))
コードを編集して実行