Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,768 views

Published on

Published in: Engineering

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

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

×