R 二乗統計を計算する
決定係数統計は、線形回帰モデルがデータにどの程度適合しているかを評価するために使用される数値です。これは、モデルの独立変数によって説明される従属変数の分散の比率を示します。
R-squared 統計は、線形回帰モデルにのみ関係します。線形回帰モデルでは、従属変数は定量的です。
モデルは、従属変数が独立変数に線形従属していることを前提としています。決定係数は、多項式および交互作用項を含む線形モデルの単純な拡張にも関連します。
決定係数統計について注意すべきその他のポイントは次のとおりです。
- プロポーションなので、単位はありません。
- 比率であるため、常に 0 から 1 の範囲です。
- 値 0 は、モデルが分散を説明しないことを意味します。
- 値 1 は、モデルがすべての分散を説明することを意味します。
- 通常、R-squared の値が高いモデルの方が優れていると見なされます。
- 独立変数を追加すると、常に R-squared の値が増加します。これにより、モデルがデータに過剰適合する可能性があります。したがって、データをオーバーフィットする別のモデルよりもわずかに低い決定係数を与えるモデルを選択すると便利な場合があります。
- 線形モデルは、モデルの作成に使用されたデータに対してのみ有効な決定係数統計を提供します。モデルは、異なるデータセットを使用して従属変数値のベクトルを予測できます。ただし、そのような予測値の決定係数統計を計算するべきではありません。
決定係数の公式
いくつかの独立変数を使用して変数 Y
を予測しようとしたとします。従属変数 Y
を含むすべての変数の値がわかっている完全な観測値を使用して、線形回帰モデルを構築します。
Y
の算術平均は、線形回帰モデルがない場合の Y
の推定値です。ベースラインとして使用されます。
Y
の観測値と Y
の算術平均の差が合計偏差です。これらの差の二乗和は、総平方和、TSS と呼ばれます。
線形回帰モデルが予測する Y
と Y
の観測値の違いは、残余偏差です。これらの偏差は、線形回帰モデルの独立変数を使用して Y
を予測しようとした後も残ります。
これらの差の二乗和は、残差平方和、RSS と呼ばれます。決定係数の統計は、(TSS-RSS)/ TSS として計算されます。したがって、モデルは Y
の分散の比率を説明しました。
RSS が低くなるため、より良いモデルは通常、R-squared 統計が高くなります。
線形回帰モデルから決定係数統計を取得する
R の基本的なインストールには、デフォルトでロードされる stats
パッケージの一部として線形モデリング関数 lm()
が含まれています。
これは、線形回帰モデルを簡単に構築するのに役立ちます。この関数の最初の引数は、モデルの仕様です。
Y
が X
にどのように依存しているかを確認することを指定します。2 番目の引数はデータのソースです。R が変数 X
と Y
を見つけるデータフレームを指定します。
summary()
関数は、モデルの決定係数統計を報告します。次の例では、単純な線形回帰モデルを作成し、R に R-squared の値を報告させます。
サンプルコード:
# Create sample data.
# Independent variable, X.
X = c(1, 2, 3, 4, 5)
# Dependent Variable, Y, of the form 2x+1, with added error.
Y = c(2, 6, 7, 10, 9)
# Make a data frame, df.
df = data.frame(X,Y)
# Build the linear regression model named lin.mod.
lin.mod = lm(formula = Y~X, data = df)
# Check R^2 in the model summary. It is labeled as Multiple R-squared.
summary(lin.mod)
出力:
Call:
lm(formula = Y ~ X, data = df)
Residuals:
1 2 3 4 5
-1.2 1.0 0.2 1.4 -1.4
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.4000 1.5319 0.914 0.428
X 1.8000 0.4619 3.897 0.030 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.461 on 3 degrees of freedom
Multiple R-squared: 0.8351, Adjusted R-squared: 0.7801
F-statistic: 15.19 on 1 and 3 DF, p-value: 0.02998
summary()
関数を呼び出すと、大量の出力が生成されました。Multiple R-squared の値は、私たちが取得しようとしているものです。
決定係数の統計を手動で計算する
R-squared 統計は、相関係数 cor()
の関数を使用して取得できます。ただし、適切な場合にのみ、適切なコンテキストで使用するようにする必要があります。
- 単純線形回帰の場合、R-squared は、
Y
とX
の間の相関係数の 2 乗に等しくなります。ここで、X
は独立変数です。 - 重回帰の場合、R-squared は、
Y
とモデルによって予測されたY
の値の間の相関係数の 2 乗に等しくなります。
次の例は、作成した単純な線形回帰モデルを使用したこの計算を示しています。
サンプルコード:
# The cor() function gives the correlation coefficient.
# Its square is equal to the R-squared statistic.
cor(X,Y)^2
出力:
> cor(X,Y)^2
[1] 0.8350515
相関係数の 2 乗は、線形回帰モデルの要約によって報告された R2 乗値と同じであることがわかります。
決定係数を計算するカスタム関数を作成する
同じ長さの 2つの数値ベクトル間の決定係数統計を手動で計算する必要がある場合は、カスタム関数を記述してタスクを簡略化できます。
カスタム関数は、function_name = function(argument list) {body of function}
の形式になります。次のように呼び出されます:function_name(パラメータリスト)
。カスタム関数で cor()
関数を使用します。
サンプルコード:
# Define the custom function.
VectorRSq = function(x, y) {cor(x, y)^2}
# Call the custom function.
VectorRSq(X, Y)
出力:
> VectorRSq(X, Y)
[1] 0.8350515
ヘルプ
決定係数統計の詳細については、オンラインで無料で入手できる優れた教科書統計学習の概要の線形回帰の章をお読みください。
R でカスタム関数を作成する方法の詳細については、HadleyWickham のオンラインブック Rfor DataScienceの関数に関する章を参照してください。
lm()
、cor()
、または c()
関数のヘルプについては、RStudio メニューの[ヘルプ]> [R ヘルプの検索]をクリックし、検索ボックスに括弧なしで関数名を入力してください。
まとめ
R-squared 統計は、線形回帰モデルがデータにどの程度適合しているかを評価するために使用されます。モデルの作成に使用されたデータに対してのみ有効です。線形モデリング関数 lm()
から生成された要約は、決定係数統計の値を示します。
必要に応じて、cor()
関数を使用して、同じ長さの 2つの数値ベクトル間の決定係数統計を計算できます。直接またはカスタム関数を介して実行できます。