階層線形(Hierarchical Linear Regression)モデル|PyMC3チュートリアルに学ぶ統計モデリング #5
当シリーズではPyMC3のチュートリアルを元に統計モデリングについて確認しています。PyMC3はベイズ統計モデリングのためのPythonのパッケージで、Pythonにおいてベイズ統計を取り扱うにあたってはデファクトとみて良いパッケージだと思います。
#1〜#4は下記のように進めました。
#5では階層線形(Hierarchical Linear Regression)モデルについて取り扱います。
以下、目次になります。
1. 問題設定&モデリングの理論的な内容の確認
2. 実装の確認
3. まとめ
1. 問題設定&モデリングの理論的な内容の確認
1節では問題設定とモデリングの理論的な内容の確認を行います。
上記のように、ここでの問題設定としてはいくつかの州の行政区分や地下か地上かを踏まえた上でラドンの放射性ガス(radioactive gas radon)を予測する問題です。
以下この予測にあたってのモデリングに関して確認していきます。
まず、上記はfloorの情報だけを用いてシンプルな回帰分析を行っています。floorは地下かどうかなためカテゴリカル変数だと考える方が良いと思いますが、2値であるためで表したslopeのパラメータが一つで済んでいます。とはいえ、これでは州(state)やさらに詳細には行政区分(county)を考慮できていません。そこでより高度なモデリングをどうするかについて以下では考えます。
州や行政区分を考慮するにあたって、やのようにそれぞれの行政区分の数だけパラメータを設定する方法について上記では言及されています。PoolingとUnpoolingはパラメータをまとめるかどうかの意味合いで使われていると考えて良さそうです。
ここまでの二つの手法の中間的な手法として、階層的回帰(Hierarchical Regression)が上記で言及されています。PoolingとUnpoolingの中間としてPartial poolingのように表現されています。この方法においてはとがそれぞれ正規分布にしたがって得られると考える考え方です。これによりパラメータが階層的になるのでHierarchical Linear Regressionと呼んでいるようです。
大体のイメージがつかめたので1節はここまでとします。
2. 実装の確認
2節では実装を確認していきます。
上記が階層的でないunpooledなモデリング、下記が階層的でPartial pooledなモデリングとされています。
それぞれpm.sample(2000)などによってMCMCの計算が行われています。
hierarchical_traceを元にpm.traceplotを用いて可視化を行うと上記のようになります。右の図では2,000ステップの値の変動について記載されています。横軸がステップ数、縦軸が値の変動を意味しており、ランダムウォークなどの記述などと同様にこの図は理解しておくと良いかと思います。
大体はつかめたので2節はここまでとします。
3. まとめ
#5では階層線形(Hierarchical Linear Regression)モデリングについて取り扱いました。
Pooling、Unpooled、Partial poolingの言葉とともに階層モデリングについては理解しておくと良さそうでした。
#6では混合ガウスモデル(Gaussian Mixture Model)について取り扱います。