今回の記事は、ちょっとある噂を耳にしたのでそれに関する検証をしようかと思います。
「識別条件を満たさないモデルでもベイズだと(どういう意味合かはわからないが)解釈出来るらしい」
という話を耳にしまして。
ちょっとどういう意味合いで解釈できるのか、どういう意味で妥当なのかを聞きそびれたので、今回はそれを検証してみようかと思います。
(そもそも個人的には、本当かどうかも疑わしい気がしてるのですが...どうなのでしょうか。)
識別条件
まず、一般的に統計モデルには識別条件というものがあって、
要はこの条件を満たさないモデルのパラメータはまともに推定することも、理論上解釈することも出来ないというお話です。
例えば、次のような線形モデルを考えたとします。
とがパラメータです。
普通の線形モデルだと下のような形をしているわけですが
今回はとがふたつ掛けてあります。
このモデルは識別条件を満たさないモデルになります。どういうことかというと、
例えばが10,が20だったとして、
というモデルだったならばだとわかりますが、
というモデルの場合になってしまい、とがどのような値を取るかはわかりません。
かもしれないし、かもしれません。との値がどのようなデータが得られたとしても識別出来ません!!
よって、このモデルはいくらデータを集めても解釈できないモデルになってしまうというわけです。
ベイズ
で、この解釈出来ないモデルをベイズで考えると、一応(どういう意味合いかはさておき)問題なく解釈出来る
という話を聞いたわけなんですね。
「「そんな馬鹿な....
普通にデータから情報が無いのだからベイズだろうがなんだろうが、どうしようもないはずでは.....」」
なんて思いつつやっていきます。
使用データ
によって出来るの組を
①のデータ
②のデータ
と2種類作成し、試してみます。
①の方がサンプルサイズが小さいというだけですね。
モデル
ベイズモデルとして次のようなモデルを考えます。
パラメータの事前分布は、全て範囲を十分広く取った無情報事前分布(一様分布)。
ただし
ベイズについてよくわからないという方は、こちらをどうぞ
ベイズ統計学 カテゴリーの記事一覧 - バナナでもわかる話
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の収束
とりあえず、を全部見せるとえらいこっちゃなるので、主要パラメータだけ確認するとこんな感じ。
①サンプルサイズ70の方
②サンプルサイズ700の方
は良い感じですが、まあ当たり前ですがは乱数の発生のさせ方次第でバラバラですね....
うーむ。まあとりあえずはうまくいっていそうなので、事後分布のヒストグラムの方も見てみることにします。
事後分布
①サンプルサイズ70の方
②サンプルサイズ700の方
とりあえず、に関して言えばサンプルサイズを大きく取ってデータの情報が増えると、それに合わせて分布のボリュームが設定した値によっていることが確認出来ますね。
②のヒストグラムを見ていただけるとわかる通り、についても、正直偶然の産物のようにも見えますが、絶対値を取れば近辺の値がボリュームになっています。不思議ですね~なんで5のあたりできっぱりなくなってるんだろ。正直眉唾なので偶然こうなっただけだと思っておきたい気もしています。
解釈
んん~なんか「うまくいきませんでした~」を期待してたのにうまくいってしまいましたね。
なんでだろう。
まず、確かにベイズで識別条件を考える必要は無いと思うんです。
要は識別条件って「情報が無いからわからない」という話なので
ベイズだととりあえず事前分布を設定しているのでパラメータに関する「情報はある」んですね。
だから確かに理論上識別条件を満たさないモデルに対してベイズルールを適用すること自体は問題が無い。
ただ、情報があることとうまくいくことは別の話で、パラメータに関する情報はデータにはほぼ無いはずなので....
ベイズは使っていいけど、情報は無い物は無いのだからうまくはいかない!
はずだったんですけど、なんかうまくいきましたね。
まあそもそもMCMCの推移が怪しいので、
あんなマルコフ連鎖からサンプリングしてきたこと自体がうまくいっていないといえばその通りなのですが、
結果は良好なのが気に入らないですね~。。。。
他のパラメータを固定した状態でのの尤度を考えているから一応事前分布以外の情報も発生しているのだろうかというような気もしますが、でもだからといって5とか10とか特定するのは無理そうな気がするのですが...
数式いじったらもう少しわかりそうですけど、ちょっと今日はもう夜も更けてて今から数式ゴリゴリする元気もないのでこの辺りで終わっておきます。
とりあえずもう少し検証が必要そうですね~
あ、もし、この辺にお詳しい方がいらっしゃったら、情報お待ちしております!笑