Advertisement

Stanの紹介と応用事例(age heapingの統計モデル)

Nov. 24, 2017
Advertisement

More Related Content

Advertisement

Recently uploaded(20)

Advertisement

Stanの紹介と応用事例(age heapingの統計モデル)

  1. StanとRでベイズ統計モデリング Kentaro Matsuura 2017.11.25
  2. ベイズ統計モデリングとは 2 連立方程式 問い つるかめ算 旅人算 食塩水の濃度 モデル化 連立方程式に落とす 解法 加減法 代入法 答えのかたち 𝑥 =●● 𝑦 =▲▲ ベイズ統計モデリング 行動の理解・予測 現象の理解・予測 複数のパラメータを含む、 モデル式に落とす MCMC 変分ベイズ ・・・ パラメータの(事後の)同時分布
  3. 結局Stanは何をするための道具? 3 かんたんにモデルを組み立てて, パラメータの(事後の)同時分布を得るための道具 Stanでは同時分布そのものの代わりに, 「MCMCサンプル」 そこからの乱数サンプルたちを求める ちょっとしたモデルで すぐに数式で表現不能になる
  4. 類似ソフトとの比較 (評価は主観) 汎用性 × △ ○ ○ ○ ○ ○ ○ バグの入りにくさ × ○ ○ ○ ○ ○ ○ ○ エラーメッセージの 読みやすさ - ○ × △ △ ○ △ ○ MCMCの速度・質 ◎ ○ ○ ○ ◎ △ △ △ 変分ベイズ ◎ - - - ○ - ○ - マニュアルや 例の充実度 - △ ○ △ ◎ △ ○ ○ 開発頻度 - △ × △ ◎ ○ ◎ ○ 備考 空間 ベイズ 離散パラ メータ× 良くも悪くも Tensorflow 有料 4
  5. Rは何のために必要か? • Stanをお手軽に実行するため • MCMCサンプルを縦横無尽に扱うため • 統計モデリングの前後の十分な可視化のため • 確率分布を用いたシミュレーションのため 5
  6. 単回帰の例 • 年功序列の会社における, 年齢と年収の関係 • 説明変数: 年齢𝑋 𝑛 , 応答変数: 年収𝑌 𝑛 • モデル式: 𝑌 𝑛 ~ Normal 𝑎 + 𝑏𝑋 𝑛 , 𝜎 • パラメータ: 𝑎, 𝑏, 𝜎, 事後分布: 𝑝 𝑎, 𝑏, 𝜎|𝑋, 𝑌 6 1 2 3 4 21 X,Y 24,472 24,403 26,454 ... 59,1314 data-salary.txtの構成
  7. モデルを表すStanファイル 7 dataブロックはデータの宣言 ・変数の型宣言が必要 int : 整数型, real: 実数型 ・[] は配列 parametersブロックは推定したいパラメータの宣言 ・<lower=0> は定義範囲 modelブロックでモデル式を書く ・forはRと同様に繰り返し 分布の指定がないパラメータは無情報事前分布に従う
  8. 推定を実行するRファイル 8 直前のStanファイルを指定 dataブロックに対応した, Rの名前つきlistを渡す • {rstan}パッケージを使う.
  9. print(fit)の結果 9 よく使われるMCMCの収束判定は, すべてのパラメータの Rhat < 1.1 ※ traceplotもチェックするべきですが, ここでは省略します.
  10. print(fit)の結果 10 事後周辺分布 𝑝 𝑎|𝑋, 𝑌 の要約になっている
  11. 4000行のうち先頭6行 MCMCサンプルを取り出してみる 11 この1行は, 同時分布 𝑝 𝑎, 𝑏, 𝜎|𝑋, 𝑌 からの 乱数サンプル1個に相当 この1列は, 周辺分布 𝑝 𝑎|𝑋, 𝑌 からの 乱数サンプル𝑁 𝑚𝑐𝑚𝑐個に相当
  12. MCMCサンプルを鮮やかに操るには • 以下のパッケージを使うのがオススメ {ggmcmc}, {dplyr}, {tidyr}, {ggplot2} 12
  13. 例:𝑎, 𝑏の95%ベイズ信頼区間を求める 13
  14. 応用事例
  15. 1990年のインドネシアの人口ピラミッド 15 • 自分の年齢をよく覚えていない人がキリの良い年齢を自己申告 [万人] 真の人口ピラミッド(構成比)を推定したい
  16. メカニズムの想像 • 仮定1: 真の人口ピラミッド𝑞において, 近くの年齢における構成比は“似ている” • 仮定2: キリの良い年齢へは前後2歳から流入がある 16 Intrinsic Gaussian Markov Random Field (IGMRF) 60歳 55歳 𝑞 𝜇 ※前後2歳の代わりに, ガウスカーネルや指数関数などを用いることも考えられる.
  17. モデル式 • 𝐴: 年齢の数 (ここでは0~75歳の76個) • 𝑎: 年齢インデックス (eg. 𝑎 = 1がゼロ歳) • 𝑌 𝑎 𝑎 = 1, … , 𝐴: 各年齢の人口データ • 𝑞 𝑎 𝑎 = 1, … , 𝐴: 真の構成比 • 𝜇 𝑎 𝑎 = 1, … , 𝐴: 流入・流出後の構成比 • 𝑌 ~ Multinomial 総人口, 𝜇 • 𝑞 𝑎 ~ Normal 2 𝑞 𝑎 − 1 − 𝑞 𝑎 − 2 , 𝜎𝑞 17 2階差分の IGMRF 74, 75歳間 は無視 𝑎 = 3, … , 𝐴 − 1
  18. (補足) IGMRFの尤度 Håvard Rue et al. (2005) “Gaussian Markov Random Fields” Chapman & Hall/CRC • 1次元の場合: IGMRFと状態空間モデルは同じ尤度となる. 例: 1階差分の場合の尤度 𝑙𝑖𝑘𝑒𝑙𝑖ℎ𝑜𝑜𝑑 ∝ 観測モデルの尤度 × 1 𝜎𝜇 𝐼−1 2 exp − 1 2 ෍ 𝑖=2 𝐼 𝜇 𝑖 − 𝜇 𝑖 − 1 𝜎𝜇 2 • 2次元の場合: 例: 1階差分の場合の尤度 𝑙𝑖𝑘𝑒𝑙𝑖ℎ𝑜𝑜𝑑 ∝ 観測モデルの尤度 × 1 𝜎𝜇 全サイト数−1 2 exp − 1 2 ෍ 𝑖,𝑗 と 𝑖′,𝑗′ が 隣接 𝜇 𝑖, 𝑗 − 𝜇 𝑖′, 𝑗′ 𝜎𝜇 2 18 -1は「全ての𝜇に定数を足しても不変」 という線形制約による精度行列のrank の減少分に関係する. 一般に線形制約の数は, 𝑑: 次元, 𝑘: 階差 として| 𝑑+𝑘−1 𝐶𝑘−1となるので, その分がマイナスとなる.
  19. • 2次元の場合: 例: 2次元正方格子, 2階差分の場合の尤度 𝑙𝑖𝑘𝑒𝑙𝑖ℎ𝑜𝑜𝑑 ∝ 観測モデルの尤度 × 1 𝜎𝜇 𝐼×𝐽−3 2 exp − 1 2 ෍ 𝑖=2 𝐼−1 ෍ 𝑗=2 𝐽−1 ○ ● ○ ● ○ ● ○ ● ○ − 4 ○ ○ ○ ○ ● ○ ○ ○ ○ 𝜎𝜇 2 または, 観測モデルの尤度 × 1 𝜎𝜇 𝐼×𝐽−3 2 exp − 1 2 ෍ 𝑖=2 𝐼−1 ෍ 𝑗=2 𝐽−1 2 3 ○ ● ○ ● ○ ● ○ ● ○ + 1 6 ● ○ ● ○ ○ ○ ● ○ ● − 10 3 ○ ○ ○ ○ ● ○ ○ ○ ○ 𝜎𝜇 2 などが考えられる (いずれもΣの括弧の中は 𝜕2 𝜕𝑥2 + 𝜕2 𝜕𝑦2の差分による近似). 19
  20. モデル式 • 𝐽: 流出が起こる年齢の数 (𝑗は流出のインデックスとなる) • 𝐹𝑟𝑜𝑚 𝑗 𝑗 = 1, … , 𝐽: 流出元の年齢インデックス • 𝑇𝑜 𝑗 𝑗 = 1, … , 𝐽: 流出先の年齢インデックス • 𝑟 𝑗 𝑗 = 1, … , 𝐽: 𝑞 𝐹𝑟𝑜𝑚 𝑗 のうち, 何割が流出したかを 表すパラメータ(範囲は 0,1 ) • 𝜇は, 𝑞と𝑟から以下の手順で作られる. 1. 𝜇を𝑞で初期化 2. for 𝑗 in 1, … , 𝐽: 𝜇 𝐹𝑟𝑜𝑚 𝑗 = 𝜇 𝐹𝑟𝑜𝑚 𝑗 − 𝑟 𝑗 𝑞 𝐹𝑟𝑜𝑚 𝑗 𝜇 𝑇𝑜 𝑗 = 𝜇 𝑇𝑜 𝑗 + 𝑟 𝑗 𝑞 𝐹𝑟𝑜𝑚 𝑗 20
  21. モデル式 • 𝑟 𝑗 は何らかの制約がないとうまく推定できない. そこで, 以下のように縛りを入れる (階層モデル): • 仮定3: 𝑟 𝑗 ~ Normal 𝜇 𝑟, 𝜎𝑟 𝑇 0,1 𝑗 = 1, … , 𝐽 ※他には以下の仮定なども考えられる. • 仮定3’: logit 𝑟 𝑗 ~ Normal 𝜇 𝑟, 𝜎𝑟 𝑗 = 1, … , 𝐽 21
  22. モデルを表すStanファイル 22 仮定2 仮定3 仮定1 仮定3が切断正規分布のため
  23. 推定を実行するRファイル 23 𝐹𝑟𝑜𝑚 𝑗 ,𝑇𝑜 𝑗 の作成 人口データ の読み込み
  24. 結果 | 真の構成比𝑞 24 エラーバーは 95%ベイズ信頼区間
  25. 結果 | 𝑞と元データの重ね合わせ 25
  26. 結果 | キリの良い数字に答えてしまう割合𝑟 26 エラーバーは 95%ベイズ信頼区間
  27. 参考文献 • 松浦健太郎 (2016) 『StanとRでベイズ統計モデリング』 共立出版 • MCMCサンプルを{dplyr}で操る – http://statmodeling.hatenablog.com/entry/using-mcmc-samples-with-dplyr • 人口ピラミッドのAge Heapingを階層ベイズで補正する – http://statmodeling.hatenablog.com/entry/age-heaping • Håvard Rue et al. (2005) “Gaussian Markov Random Fields” Chapman & Hall/CRC • IGMRFの尤度におけるrankの減少分に関するメモ – http://statmodeling.hatenablog.com/entry/IGMRF-likelihood 27
Advertisement