ベイズ線形回帰
From Wikipedia, the free encyclopedia
ベイズ線形回帰(ベイズせんけいかいき、英: Bayesian linear regression)は、線形回帰モデルの回帰係数や誤差分散を確率変数として扱い、事前分布と観測データに基づいてそれらの事後分布を求めるベイズ推定の手法である[1][2]。回帰係数を一つの値として求めるだけでなく、その不確実性を事後分布として表し、将来の応答変数については事後予測分布を求めることができる。
正規誤差を仮定した線形回帰では、正規分布などの共役事前分布を用いると事後分布を解析的に求められる。より複雑な事前分布、階層構造、外れ値に頑健な誤差分布などを用いる場合には、マルコフ連鎖モンテカルロ法や変分ベイズ法などの数値計算が利用される[3][2]。
モデル
事前分布と事後分布
誤差分散が既知の場合
誤差分散 が既知で、回帰係数に正規事前分布
を置くと、事後分布も多変量正規分布となる。事後共分散行列 と事後平均 は
であり、
誤差分散が未知の場合
誤差分散も未知の場合、代表的な共役事前分布は
である。ここでは逆ガンマ分布を
と母数化する。この同時分布は正規逆ガンマ分布と呼ばれる。精度 を用いれば、同じ共役構造を正規ガンマ分布で表せる[3]。
事後ハイパーパラメータを
とすると、
となる。 を積分消去した回帰係数の周辺事後分布は、自由度 の多変量t分布である[3]。
広く用いられる無情報事前分布の一つは
である。この事前分布は非正規化事前分布であるため、事後分布が正規化可能かを確認する必要がある。設計行列の階数が であり、 ならば事後分布は正規化可能となる[2]。
事後予測分布
最小二乗法および正則化との関係
設計行列が列フルランクで、回帰係数に平坦な事前分布を置いた極限では、事後平均は最小二乗法による推定量
に一致する。また、標準的な無情報事前分布のもとでは、回帰係数の周辺信用区間が通常の線形回帰における信頼区間と数値的に一致する場合があるが、両者の確率解釈は異なる[2][3]。
誤差分散が既知で、
とすると、事後平均と最大事後確率推定値は
となり、リッジ回帰の推定量と一致する[3]。このように正規事前分布は回帰係数を事前平均へ縮小する働きをもつ。事前共分散を とするg-事前分布も、回帰モデルの変数選択やモデル比較で用いられる。
回帰係数や回帰式の集合に交換可能性を仮定し、それらを共通の分布から生じたものとして扱うと、複数の係数や群の間で情報を共有する階層ベイズモデルになる。LindleyとSmithは、この考え方を多段階の線形モデルとして定式化し、推定値が全体平均などへ縮小されることや、リッジ回帰に近い推定式が得られることを示した[5]。
モデル評価と拡張
モデルの適合度は、残差の図示に加え、事後分布から反復データを生成して観測データと比較する事後予測チェックによって調べられる。例えば、残差と当てはめ値の関係、分散の不均一性、外れ値、誤差の相関などを検討する[2]。
説明変数の組合せや異なる回帰モデルを比較する方法には、周辺尤度、ベイズ因子、予測性能に基づく基準などがある。各モデルの不確実性を残したまま予測を平均する方法はベイズモデル平均と呼ばれる[1][3]。
通常の正規線形回帰は、誤差が独立で同じ分散をもつことを仮定する。この仮定を緩めることで、不均一分散、相関のある誤差、ロバスト回帰、階層線形モデルなどへ拡張できる。また、回帰係数にラプラス分布やスパイク・アンド・スラブ分布などの事前分布を置くことで、縮小推定や変数選択を行うこともできる[2]。
計算とソフトウェア
共役事前分布を用いる基本モデルでは、行列分解と既知の確率分布からの乱数生成だけで事後分布を計算できる。数値的な安定性のため、 を直接計算する代わりに、QR分解やコレスキー分解を用いて連立方程式を解くことが多い[2]。非共役事前分布や階層構造を含むモデルでは、汎用的なベイズ計算ソフトウェアが用いられる。
| 環境 | 主な機能 |
|---|---|
| Python・scikit-learn | sklearn.linear_model.BayesianRidge は、回帰係数と誤差の精度に事前分布を置き、周辺尤度の最大化によって正則化のハイパーパラメータを推定するベイズリッジ回帰を実装している[6]。任意の事前分布を指定する汎用ベイズ推論とは目的が異なる。 |
| Python・PyMC | Pythonコードで確率モデルを記述し、マルコフ連鎖モンテカルロ法や変分推論によって線形回帰、階層回帰、ロバスト回帰などを推定できる[7]。 |
| Stan | 尤度と事前分布をモデルとして記述し、勾配を用いるマルコフ連鎖モンテカルロ法などで事後分布を計算する。単純な線形回帰から多階層の一般化線形モデルまで記述できる[8]。PythonからはCmdStanPyなどのインターフェースを利用できる[9]。 |
| R | brms と rstanarm はStanを計算基盤として用い、Rの数式形式に近い記法でベイズ回帰モデルを指定する[10][11]。 |
| MATLAB | Econometrics Toolboxの bayeslm は、回帰係数と誤差分散の事前モデルを作成し、事後分布の推定や予測を行う機能を提供する[12]。 |