« 読了:Diebold & Pauly (1990) ベイジアン・シュリンケージによる予測結合 | メイン | 読了:Lenk & Rao (1990) 階層ベイズなBassモデル (心温まるコメントと背筋の凍る返答つき) »
2016年4月 7日 (木)
Clemen, R.T., & Winkler, R.L. (1986) Combining Economic Forecasts. Journal of Business and Economic Statistics, 4(1), 39-46.
ベイジアン合意モデルの有名論文。やれやれ、どういう話なのか、ようやくわかったよ...
予測対象である変数$x$について、複数の予測値からなるベクトル$\hat{\mathbf x} = (\hat{x}_1, \ldots, \hat{x}_k)'$が得られているとしよう。これらの予測を結合する一番手っ取り早い方法は、平均
$\displaystyle y_1 = \frac{\sum_i^k \hat{x}_i}{k} $
を求めることだが、この方法は、それぞれの予測値の精度のちがいを無視しているし、予測値が基づいている情報源の重複も無視している。
そこでベイジアン・モデル。かつてNewbold & Granger(1974, JRSS), Winkler(1981) はこう考えた。予測誤差のベクトル $\mathbf{e} = (\hat{x}_1 - x, \ldots, \hat{x}_k - x)'$が$MVN(0, \mathbf{\Sigma)}$に従い、共分散行列$\mathbf{\Sigma}$は正定値行列だとする。$\mathbf{\Sigma}$の推定値を$\hat{\mathbf{\Sigma}}$としよう。予測の結合は
$\displaystyle y_2 = \frac{\mathbf{u}' \hat{\mathbf{\Sigma}}^{-1} \hat{\mathbf{x}} }{\mathbf{u}' \hat{\Sigma}^{-1} \mathbf{u}}$
ただし$\mathbf{u} = (1, \ldots, 1)'$。これはつまり、重みベクトル
$\displaystyle \mathbf{w}' = \frac{\mathbf{u}' \hat{\mathbf{\Sigma}}^{-1}}{u' \hat{\mathbf{\Sigma}}^{-1} u}$
を使って$\hat{\mathbf{x}}$の加重和をとっているわけである。
$\hat{\mathbf{\Sigma}}$をどうやって手に入れるか。普通に考えれば、標本共分散行列をそのまま使えばよいのだが、データサイズが小さくてペアワイズの相関が高いとき(たいていそうだ)、不安定になってしまう。以下では、標本共分散行列をつかった正規モデルを出発点とし、標本共分散行列の不安定性にどうやって対処するかを考えよう。
[ここからいろんなアイデアが紹介される:標本共分散行列を求めるのに使うデータを増やす、最近の事例を重視する、$\mathbf{\Sigma}$は対角行列だと考えてしまい非対角要素にゼロを埋める、結合した予測値が予測値ベクトルの最小値と最大値の範囲の外に出た時だけその範囲へと修正する、ウェイトが足して1だという制約を捨てて切片なしのOLS、予測の誤差の平均ベクトルが0だという想定も捨てて切片ありのOLS、前回一番良かった予測を使う、改善を期待してあえて前回一番悪かった予測を使う。いろいろ考えてみたけど、こういうの全部アドホックだよね、というわけで...]
提案。
$\mathbf{\Sigma}$の事前分布を、共分散行列$\mathbf{\Sigma}_0$、自由度$\alpha(>k-1)$の逆ウィシャート分布とする。すると$\mathbf{\Sigma}$の事後分布も逆ウィシャート分布となり、その共分散行列と自由度は
$\displaystyle \mathbf{\Sigma}^* = \left( \frac{\alpha \mathbf{\Sigma}_0^{-1} + n \hat{\mathbf{\Sigma}}^{-1}}{\alpha + n} \right)^{-1}$
$\alpha^* = \alpha + n$
となり、$x$の事後平均は、
$\displaystyle y_3 = \frac{\mathbf{u}' \hat{\mathbf{\Sigma}}^{*-1} \hat{\mathbf{x}} }{\mathbf{u}' \hat{\mathbf{\Sigma}}^{*-1} \mathbf{u}}$
となる。
$\mathbf{\Sigma}_0$は、すべての予測を交換可能とみなして、対角成分を$\sigma^2$, 非対角成分を$\sigma^2 \rho$とする。
$\alpha$は等価な事前標本サイズに相当する。大きくすると$w_i$は等しくなっていく。
実例。1971-82年の名目・実質GNP(四半期)の、4つの機関による予測と実現値を使用。4つの予測を結合した値の予測誤差を調べる。以下の方法を試す。
- 単純平均。
- 正規モデル。過去$n$期のデータから$\hat{\mathbf{\Sigma}}$を求める。$n$は5, 10, 15, 20とする。
- 正規モデルで、過去の事例を重視する。予測$i$の$t$期の予測誤差を$e_{it}$として、$\hat{\mathbf{\Sigma}}$の各要素を、$\sum_i^n \beta^t e_{it} e_{jt} / \sum_t^n \beta^t$とする。$\beta$は1から2まで0.1刻みで動かす。
- 正規モデルで、結合した予測値が予測値ベクトルの最小値と最大値の範囲の外に出た時だけその範囲へと修正する。
- 正規モデルで、$\hat{\mathbf{\Sigma}}$の非対角成分にゼロを埋める。
- OLS。切片なしとあり。
- 前回の成績が最良だった予測を採用する、最悪だった予測を採用する。
- ベイジアン・モデル。$\sigma^2$はプールした推定値とし、$\rho=.7$とする。$\alpha$は4, 10, 20, 50, 100を試す。
- 独立性を仮定したベイジアン・モデル。$\Sigma_0$と$\hat\Sigma$の非対角成分を0とする。$\alpha$は20とする(これを変えても結果はあまり変わらない)。
結果。成績が良かったのは、単純平均、独立性を仮定した正規モデル、そしてベイジアン・モデル(独立性仮定はあってもなくてもよい)。独立性仮定がうまくワークしたのはたまたまであろうから、ベイジアンがよろしいのではないでしょうか、云々。
。。。最初に手に取ったときは文脈がつかめずに挫折したんだけど、ようやく状況がわかってきた。こういうことじゃないかと思う。
複数個の不偏な予測があって、これを結合したいとき、予測の共分散行列の逆行列を縦に合計し、これを和が1になるように調整し、これを重みとして予測値の加重和を求めるとよい。というアイデアは、ベイジアン・アプローチとは無関係にすごく昔からある。未読だが、Bates & Granger(1969)が最初だと思う。
この手法をベイジアンの観点から基礎づけたのがWinkler(1981), Bordley(1982)。$x$の事前分布が一様分布で、予測の誤差が多変量正規性を持つという前提の下で、上の予測合成が$x$の事後分布の平均となることを示した。
ここまでの話では、予測の共分散行列は基本的に既知であった。実際には、予測の共分散行列を推定するのがすごく難しい。そこで2つの路線が登場する。
- Winkler(1981)の後半に始まり、この論文へと続く路線。共分散行列についてもベイズ推測する。つまり、共分散行列の事前分布として逆ウィシャート分布を与える。合成された予測値は、 加重和を単純平均にシュリンケージしたものになる。
- Diebold & Pauly(1990)の路線。共分散行列ではなく、個々の予測を説明変数とする重回帰モデルをベイズ推定する。DieboldらはZellnerのg事前分布を使っている。合成された予測値は、OLS重回帰を単純平均にシュリンケージしたものになる。
2つの路線はどう違うんだろうか。おそらく、切片項が入れられるぶん、枠組みとしては後者のほうが柔軟なのであろう。逆にいうと、もし後者に切片項を入れないならば、本質的には前者と同じことだったりしそうだなあ...
論文:データ解析(2015-) - 読了:Clemen & Winkler (1986) 共分散行列もベイズ推定するベイジアン合意モデル