7.2 最小2乗法

もちろん実際には、観測値を集めたとしても、係数\(\beta_0,\beta_1, \dots, \beta_k\)の値は知りません。だから、データから推計する必要があります。

最小2乗法の原理は、2乗誤差和を最小化することで係数を効率的に選択する方法を提供してくれます。つまり、以下を最小化する\(\beta_0, \beta_1, \dots, \beta_k\)の値を選択するのです。 \[ \sum_{t=1}^T \varepsilon_t^2 = \sum_{t=1}^T (y_t - \beta_{0} - \beta_{1} x_{1,t} - \beta_{2} x_{2,t} - \cdots - \beta_{k} x_{k,t})^2 \]

2乗誤差和を最小にするので、最小2乗法と言います。係数の最良推計を見つけることを、しばしば、モデルをデータに「当てはめ」る、と言います。モデルに「学習」させる、モデルを「訓練」する、と言うこともあります。図7.3に示した線は、こうして得られたものです。

推計された係数のことは、\(\hat\beta_0, \dots, \hat\beta_k\)と表記します。これらを求める方程式は7.9節で出てきます。

TSLM()関数は、線型回帰モデルを時系列データに当てはめます。線形モデルに広く使われているlm()関数に似ていますが、TSLM()には時系列を扱うための追加機能があります。

事例: 米国個人消費

米国個人消費の線形重回帰モデルは、以下の通りでした。 \[ y_t=\beta_0 + \beta_1 x_{1,t}+ \beta_2 x_{2,t}+ \beta_3 x_{3,t}+ \beta_4 x_{4,t}+\varepsilon_t \] ただし、\(y\)は個人消費の伸び率(%)、\(x_1\)は可処分所得の伸び率(%)、\(x_2\)は鉱工業生産の伸び率(%)、\(x_3\)は個人貯蓄の伸び率(%)、\(x_4\)は失業率の変化です。

以下の出力に、当てはめたモデルについての情報が載っています。Coefficientsの、最初の列は各\(\beta\)係数の推計値で、その隣の列は標準誤差(つまり、同様のデータセットで\(\beta\)係数を繰り返し推計したら得られるであろう標準偏差)です。\(\beta\)係数の推計値にどの程度の不確実性があるか、標準誤差から分かります。

fit_consMR <- us_change %>%
  model(tslm = TSLM(Consumption ~ Income + Production +
                                    Unemployment + Savings))
report(fit_consMR)
#> Series: Consumption 
#> Model: TSLM 
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -0.9055 -0.1582 -0.0361  0.1362  1.1547 
#> 
#> Coefficients:
#>              Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)   0.25311    0.03447    7.34  5.7e-12 ***
#> Income        0.74058    0.04012   18.46  < 2e-16 ***
#> Production    0.04717    0.02314    2.04    0.043 *  
#> Unemployment -0.17469    0.09551   -1.83    0.069 .  
#> Savings      -0.05289    0.00292  -18.09  < 2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 0.31 on 193 degrees of freedom
#> Multiple R-squared: 0.768,   Adjusted R-squared: 0.763
#> F-statistic:  160 on 4 and 193 DF, p-value: <2e-16

予測目的としては、最後の2列にはあまり興味がありません。“t value”は、\(\beta\)係数の推計値の標準誤差比。最後の列はp値、つまり、個人消費と対応する予測変数の間に実は全く関係がなかった場合の\(\beta\)係数と\(\beta\)係数の推計値に差がない確率です。各予測変数の効果を調べるのには役立ちますが、予測のためにはたいして役に立ちません。

当てはめ値

\(y\)の予測は、回帰式の推計された係数を使って、誤差項をゼロに設定すれば得られます。一般には、以下のように書けます。 \[\begin{equation} \hat{y}_t = \hat\beta_{0} + \hat\beta_{1} x_{1,t} + \hat\beta_{2} x_{2,t} + \cdots + \hat\beta_{k} x_{k,t} \tag{7.2} \end{equation}\] \(t=1,\dots,T\)間の\(x_{1,t},\dots,x_{k,t}\)に値を代入すると、訓練セット内の\(y_t\)の予測が返ってきます。これを当てはめ値と言います。モデルを推計するために使ったデータの予測であって、\(y\)の将来値の真正な予測ではないことに留意してください。

以下のプロットは、米国個人消費の伸び率(%)の実績値と当てはめ値です。図7.6の時間プロットは、当てはめ値が実績値を相当ぴったりと追いかけていることを示しています。そのことは、図7.7の散布図で強い正の関係があることからも確認されます。

augment(fit_consMR) %>%
  ggplot(aes(x = Quarter)) +
  geom_line(aes(y = Consumption, colour = "Data")) +
  geom_line(aes(y = .fitted, colour = "Fitted")) +
  labs(y = NULL,
    title = "米国個人消費の伸び率(%)"
  ) +
  scale_colour_manual(
    values=c(Data="black",Fitted="#D55E00"),
    labels = c("実績値", "当てはめ値")
    ) +
  guides(colour = guide_legend(title = NULL))
米国個人消費の実績値と当てはめ値の時間プロット

図 7.6: 米国個人消費の実績値と当てはめ値の時間プロット

augment(fit_consMR) %>%
  ggplot(aes(x = Consumption, y = .fitted)) +
  geom_point() +
  labs(
    y = "当てはめ値 (予測された値)",
    x = "実績値 (実際の値)",
    title = "米国個人消費の伸び率(%)"
  ) +
  geom_abline(intercept = 0, slope = 1)
米国個人消費の実績値と当てはめ値の散布図

図 7.7: 米国個人消費の実績値と当てはめ値の散布図

当てはめの良さ

線型回帰モデルがデータにどれだけ当てはまっているか要約する一般的な方法は、決定係数\(R^2\)によるものです。観測された\(y\)値と予測された\(\hat{y}\)値間の相関係数の2乗として計算できます。替わりに、以下のようにしても計算できます。 \[ R^2 = \frac{\sum(\hat{y}_{t} - \bar{y})^2}{\sum(y_{t}-\bar{y})^2} \] ただし、合計は全ての観測値にわたってです。こう見ると、予測対象変数の変動のうち回帰モデルが占める(あるいは、説明する)比率になっています。

線形単回帰では(切片ありとして)、\(R^2\)の値はまた\(y\)\(x\)間の相関係数の2乗に等しいです。

予測が実績値に近いなら、\(R^2\)は1に近くなります。他方、予測が実績値と無関係なら、(ここでも、切片ありとして)\(R^2=0\)となります。全てのケースで、\(R^2\)は0と1間の値になります。

予測において、\(R^2\)の値は頻繁に使われています。多くの場合、正しくない形で、ですが。\(R^2\)の値は、モデルに予測変数を追加する限り決して減少しませんから、過剰な当てはめにつながりかねません。良い\(R^2\)の値は何かについて、設定されたルールはありません。\(R^2\)の典型的な値は使用するデータのタイプによって違います。モデルの予測性能を測るには、訓練データで\(R^2\)の値を見るよりも、テストデータで検証する方がずっと良いです。

事例: 米国個人消費

7.7は、個人消費の実績値と当てはめ値の散布図です。これらの間の相関係数は\(r=0.877\)なので、\(R^2= 0.768\)(上の出力にもある通り)です。このケースでは、モデルは個人消費データの変動の76.8%を説明しており、素晴らしい仕事をしています。7.1節で同じデータセットに単回帰した際の\(R^2\)値0.15と比べてみてください。3つの予測変数を加えたことで、個人消費データの変動のより多くの部分を説明できるようになりました。

回帰の標準誤差

モデルがデータにどれだけ当てはまっているか測るもう一つの指標が、残差の標準偏差、「残差標準誤差」としばしば呼ばれるものです。上の出力では、0.31という値で示されています。

以下のように計算されます。 \[\begin{equation} \hat{\sigma}_e=\sqrt{\frac{1}{T-k-1}\sum_{t=1}^{T}{e_t^2}} \tag{7.3} \end{equation}\] ただし、\(k\)はモデル内の予測変数の数です。分母が\(T-k-1\)なのは、残差を計算する際に\(k+1\)個のパラメータ(切片と各予測変数の係数)を推計しているからです。

標準誤差は、モデルが生成する誤差の平均的な大きさに関連しています。この誤差を\(y\)の標本平均や\(y\)の標準偏差と比べることで、モデルの正確性についての見通しを得ることができます。

標準誤差は、7.6節で議論する区間予測を生成する際に使用します。