バナナでもわかる話

開設当初は計量経済学・統計学が専門の大学院生でした。今はデータを扱うお仕事をしています。統計学・経済学・投資理論・マーケティング等々に関する勉強・解説ブログ。ときどき趣味も。極力数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。

識別条件を満たさないモデルをベイズで解釈する(?)

今回の記事は、ちょっとある噂を耳にしたのでそれに関する検証をしようかと思います。

「識別条件を満たさないモデルでもベイズだと(どういう意味合かはわからないが)解釈出来るらしい」

という話を耳にしまして。
ちょっとどういう意味合いで解釈できるのか、どういう意味で妥当なのかを聞きそびれたので、今回はそれを検証してみようかと思います。
(そもそも個人的には、本当かどうかも疑わしい気がしてるのですが...どうなのでしょうか。)


識別条件

まず、一般的に統計モデルには識別条件というものがあって、
要はこの条件を満たさないモデルのパラメータはまともに推定することも、理論上解釈することも出来ないというお話です。

例えば、次のような線形モデルを考えたとします。

 Y=a×bX+\epsilon

 a bがパラメータです。

普通の線形モデルだと下のような形をしているわけですが
 Y=b^{*}X+\epsilon


今回は a bがふたつ掛けてあります。
このモデルは識別条件を満たさないモデルになります。どういうことかというと、
例えば Xが10, Yが20だったとして、

 Y=b^{*}X

というモデルだったならば b^{*}=2だとわかりますが、

 Y=a×bX

というモデルの場合 a×b=2になってしまい、 a bがどのような値を取るかはわかりません。
 a=1,b=2かもしれないし、 a=4,b=\frac{1}{2}かもしれません。 a bの値がどのようなデータが得られたとしても識別出来ません!!

よって、このモデルはいくらデータを集めても解釈できないモデルになってしまうというわけです。



ベイズ

で、この解釈出来ないモデルをベイズで考えると、一応(どういう意味合いかはさておき)問題なく解釈出来る

という話を聞いたわけなんですね。


「「そんな馬鹿な....


普通にデータから情報が無いのだからベイズだろうがなんだろうが、どうしようもないはずでは.....」」


なんて思いつつやっていきます。


使用データ

 y_i=3+5×10x_i+\epsilon_i
 \epsilon_i \tilde{} Normal(0,30)

によって出来る (x_i,y_i)の組を

 i=1,2,...70のデータ
 i=1,2,...700のデータ


と2種類作成し、試してみます。
①の方がサンプルサイズが小さいというだけですね。

モデル

ベイズモデルとして次のようなモデルを考えます。


 y=\alpha+b_1 b_2 x+\epsilon

 \epsilon\tilde{}Normal(\mu,\sigma)
 b_1 b_2 =\beta


パラメータの事前分布は、全て範囲を十分広く取った無情報事前分布(一様分布)。
ただし \sigma>0


ベイズについてよくわからないという方は、こちらをどうぞ
ベイズ統計学 カテゴリーの記事一覧 - バナナでもわかる話

Rstanによるコード

library(rstan)

model="
data{
	int N;
	real Y[N];
	real X[N]
}

parameters{
	real alpha;
	real b1;
	real b2;
	real<lower=0> sigma;
}

transformed parameters{
	real beta;
	real mu[N];
	beta=b1*b2;
	for(n in 1:N)
		mu[n]=beta*X[n];
}

model{
	for(i in 1:N)
		Y[n]~normal(mu[n],sigma);
}
"


とりあえずこんな感じですね。あとは実行して、収束を確認して結果を見るだけ。

MCMCの収束

とりあえず、 \muを全部見せるとえらいこっちゃなるので、主要パラメータだけ確認するとこんな感じ。

①サンプルサイズ70の方
f:id:bananarian:20181108215704p:plain


②サンプルサイズ700の方
f:id:bananarian:20181108215722p:plain


 \alpha,\betaは良い感じですが、まあ当たり前ですが b_1,b_2は乱数の発生のさせ方次第でバラバラですね....
うーむ。まあとりあえず \betaはうまくいっていそうなので、事後分布のヒストグラムの方も見てみることにします。


事後分布

①サンプルサイズ70の方
f:id:bananarian:20181108220137p:plain

②サンプルサイズ700の方
f:id:bananarian:20181108220202p:plain


とりあえず、 \alpha,\betaに関して言えばサンプルサイズを大きく取ってデータの情報が増えると、それに合わせて分布のボリュームが設定した値によっていることが確認出来ますね。

②のヒストグラムを見ていただけるとわかる通り、 b_1,b_2についても、正直偶然の産物のようにも見えますが、絶対値を取れば 5から10近辺の値がボリュームになっています。不思議ですね~なんで5のあたりできっぱりなくなってるんだろ。正直眉唾なので偶然こうなっただけだと思っておきたい気もしています。



解釈

んん~なんか「うまくいきませんでした~」を期待してたのにうまくいってしまいましたね。
なんでだろう。

まず、確かにベイズで識別条件を考える必要は無いと思うんです。
要は識別条件って「情報が無いからわからない」という話なので

ベイズだととりあえず事前分布を設定しているのでパラメータに関する「情報はある」んですね。
だから確かに理論上識別条件を満たさないモデルに対してベイズルールを適用すること自体は問題が無い。

ただ、情報があることとうまくいくことは別の話で、パラメータに関する情報はデータにはほぼ無いはずなので....

ベイズは使っていいけど、情報は無い物は無いのだからうまくはいかない!

はずだったんですけど、なんかうまくいきましたね。


まあそもそもMCMCの推移が怪しいので、
あんなマルコフ連鎖からサンプリングしてきたこと自体がうまくいっていないといえばその通りなのですが、
結果は良好なのが気に入らないですね~。。。。


他のパラメータを固定した状態での b_1,b_2の尤度を考えているから一応事前分布以外の情報も発生しているのだろうかというような気もしますが、でもだからといって5とか10とか特定するのは無理そうな気がするのですが...


数式いじったらもう少しわかりそうですけど、ちょっと今日はもう夜も更けてて今から数式ゴリゴリする元気もないのでこの辺りで終わっておきます。

とりあえずもう少し検証が必要そうですね~


あ、もし、この辺にお詳しい方がいらっしゃったら、情報お待ちしております!笑