MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
- 3. 本スライドの記法
• 見やすさのため, 変数を太文字にしている.
• 𝒂, 𝑿, 𝒀など.
• ベクトル(出てこないけど)は書籍と同じ 𝒀 で表す.
• 僕の視力の悪さに由来する.
• これから推定されるパラメータを赤い文字で表す.
• 𝒂, 𝝁 など.
• 事後分布は 𝒑 𝒂, 𝒃, 𝝈|𝑿, 𝒀 のように書くのではなく,
見やすさのため, データを省略し, パラメータを青い文
字で表す.
• 𝒑 𝒂, 𝒃, 𝝈 など.
3
- 5. 検定や分散分析 じゃいけないの? 5
• 検定や分散分析 はシンプルな統計モデルの一種
• 第一種の過誤(および第二種の過誤)至上主義
その他の議論は基本的に適用範囲外
• サイエンスで重要となるWhyやHowに答えにくい!
第一種の過誤とは別の視点で
“知りたいことを知る” 統計モデリングへ
- 6. ベイズ統計モデリング の 答えのかたち 6
連立方程式
問い
つるかめ算
旅人算
食塩水の濃度
モデル化 連立方程式に落とす
答えのかたち 𝑥 =●● 𝑦 =▲▲
解法
加減法
代入法
ベイズ統計モデリング
行動の理解・予測
現象の理解・予測
複数のパラメータを含む、
モデル式に落とす
パラメータの(事後の)同時分布
MCMC
変分ベイズ
・・・
- 8. 分布と比べたMCMCサンプルの利点・欠点 8
• 利点
• 数式で表せない分布でもOK
• 積分の計算がラク (次のスライド)
• 周辺化の計算がラク (後述)
• 欠点
• 数値が厳密ではない.
• 中心極限定理より,
1
𝑁 𝑚𝑚𝑚𝑚
程度の誤差がある.
• 分布を表すのに, 全サンプルを保持してないとダメ.
𝑁 𝑚𝑚𝑚𝑚はMCMCサンプルの個数
- 9. 積分をMCMCサンプルの和で表現できる
• ある確率分布を𝑝 𝜃 とする.
𝜃に依存するある量𝐴 𝜃 があるとする.
• 例えば, 𝐴 𝜃 の平均値の定義は以下であった.
𝐸 𝐴 = � 𝐴 𝜃 𝑝 𝜃 𝑑𝜃
• 𝜃のMCMCサンプルを使うと, 次のように表現できる.
𝐸 𝐴 =
1
𝑁 𝑚𝑚𝑚𝑚
� 𝐴 𝜃𝑖
𝑁 𝑚𝑚𝑚𝑚
𝑖=1
9
- 10. 周辺化の例: 書籍の4章の単回帰
• 説明変数: 年齢𝑿 𝑛
• 応答変数: 年収𝒀 𝑛
• モデル式: 𝒀 𝑛 ~ Normal 𝒂 + 𝒃𝑿 𝑛 , 𝝈
• パラメータ: 𝒂, 𝒃, 𝝈
• 事後分布: 𝒑 𝒂, 𝒃, 𝝈
10
- 15. パラメータが増えても基本的には同じ
• 例: 8.1節の階層モデル
15
同時分布
𝒀 𝑛 ~ Normal 𝒂 𝑲𝑲𝑲 𝑛 + 𝒃 𝑲𝑲𝑲 𝑛 𝑿 𝑛 , 𝝈 𝒀
𝒂 𝑘 ~ Normal 𝒂全体平均, 𝝈 𝒂
𝒃 𝑘 ~ Normal 𝒃全体平均, 𝝈 𝒃
𝒑(𝝈 𝒀, 𝒂 𝟏 , 𝒂 𝟐 , … , 𝒂 𝑲 , 𝒂全体平均, 𝝈 𝒂
𝒃 𝟏 , 𝒃 𝟐 , … , 𝒃 𝑲 , 𝒃全体平均, 𝝈 𝒃)
からのサンプリング
- 16. • 適宜周辺化して, 興味あるところを見る.
• RやPythonにおける操作が少し面倒になる.
• Rならfor文かapply関数, または{dplyr}パッ
ケージを使う.
参考リンク
• MCMCサンプルを{dplyr}で操る
http://statmodeling.hatenablog.com/entry/using-mcmc-
samples-with-dplyr
16
- 22. 例② | 予測区間の折れ線グラフ
• 4章の単回帰で, 23歳~60歳における
年収の95%ベイズ予測区間を描きたい.
22
各年齢における予測分布の分位点を求めて,
折れ線でつなげばよさそう
図から逆算して考える!
- 26. 見る ― 作図 の まとめ
• パラメータの事後分布や予測分布の可視化は,
分かりやすい非常に強力なツール.
• 図が先, コードは後!
• MCMCサンプルの加工は, 数少ない頑張りポイント.
26
- 28. 例① | 傘の問題
• 日常生活でどちらの戦略を採用するか?
𝑨: 常に折り畳み傘を持ち歩く
𝑩: 常に持たず, 雨が降ったらコンビニで傘を買う
28
- 30. • 上の損失の, 天気の出方の平均をとると,
• 𝐿 𝜽, 𝑨 = 1 − 𝜽 × 50 + 𝜽 × 50 = 50
• 𝐿 𝜽, 𝑩 = 1 − 𝜽 × 0 + 𝜽 × 500 = 500𝜽
30
戦略𝑨 戦略𝑩
𝑦 = or の場合
(確率1 − 𝜽)
50円
(持ち歩くコスト)
0円
𝑦 = の場合
(確率𝜽)
50円
(持ち歩くコスト)
500円
(購入等のコスト)
𝜽 > 0.1ならば𝑨の方が平均的に得な戦略!
損失関数の設定
- 32. 事後期待損失の計算
ここで𝐸 𝜽 は𝜽の事後平均.
32
𝐿 𝑨 = � 𝐿 𝜽, 𝑨 𝑝 𝜽 𝑑𝜽
𝐿 𝑨 = � 50𝑝 𝜽 𝑑𝜽 = 50 � 𝑝 𝜽 𝑑𝜽 = 50
𝐿 𝑩 = � 𝐿 𝜽, 𝑩 𝑝 𝜽 𝑑𝜽
𝐿 𝑩 = � 500𝜽 𝑝 𝜽 𝑑𝜽 = 500 � 𝜽 𝑝 𝜽 𝑑𝜽 = 500 𝐸 𝜽
𝐸 𝜽 > 0.1ならば𝑨の方が平均的に得な戦略!
式の見やすさのため,
𝑝 𝜽|𝒀 を𝑝 𝜽 と書く.( )
- 33. 例② | 販売数予測とアクション
• 12.4節の「季節もの」の販売数推移
• 今, 1時点先の販売個数 𝒙を予測し, 前もって製造する
個数を決める必要があるとする. その製造数を 𝒂とする.
• どのように 𝒂を決めるのが得か?(損失が少ないか)
33
- 39. 決める ― ベイズ決定 の まとめ
• ベイズ決定は事後期待損失を最小化する.
• MCMCサンプルがあれば, 複雑な事後期待損失
もラクに計算できる.
参考文献
• 松原望(2010) 『ベイズ統計学概説 フィッシャーからベイズへ』
• Gelman et al. (2013) 『BDA3』 Chapter 9
39
- 42. はじめに思いつく探し方
1. 0個食べる 幸せを記録 時間をあける
2. 1個食べる 幸せを記録 時間をあける
・・・
22. 21個食べる 幸せを記録
最も大きな幸せを記録した個数を求める
42
22回の実験が必要!
前提を活かしていない.
- 43. 効率の良い探し方の一例
1. 8個食べる 幸せを記録 9.2
2. 13個食べる 幸せを記録 3.7
3. 5個食べる 幸せを記録 9.8
4. 3個食べる 幸せを記録 7.0
5. 6個食べる 幸せを記録 10.1
6. 7個食べる 幸せを記録 9.9
43
6回の実験で探索完了!
- 45. フィボナッチ探索(Fibonacci search)
• 過去に探索した位置を有効利用し,
毎回約38%ずつ探索範囲を捨てることができる.
• その探索した位置はフィボナッチ数列になっている.
• 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,・・・
• フィボナッチ数列の隣り合う2数の比は黄金比に近づく.
• 黄金比は約1: 1.618 で, 捨てる探索範囲の割合は
1
1+1.618
≈ 0.38となっている.
45
- 49. LUCB方策(LUCB policy)
• 次の探索位置を決める方策は複数提案されている.
• ここではそのうちの一つであるLUCB方策を使ってみる.
• LUCB方策では以下を繰り返す.
49
• 𝝁の事後平均 が最大となる𝒙∗
を選ぶ.
• 𝝁の𝑿 𝒕%ベイズ信頼区間の上限 が最大となる𝒙†
を選ぶ
(ただし, 𝒙∗
以外で).
• 𝒙∗
と𝒙†
からデータを得て再び𝝁を推定する.
※途中で 𝝁 𝒙∗ の𝑿𝒕%ベイズ信頼区間の上限 <
𝝁 𝒙† の𝑿𝒕%ベイズ信頼区間の下限 + 𝜺 になったら終了.
※𝑿𝒕%の数字と𝜺は適宜変える. ここでは, 𝑿𝒕 = 𝟗𝟗, 𝜺 = 𝟎. 𝟔で固定した.
- 58. (補足) Thompson sampling
目的が,
• 「幸せが最大となる個数を知りたい」
ではなく,
• 「被験者の幸せの合計を最大化したい」
だとすると方策が変わる.
• この場合は, Thompson samplingが実用的.
すなわち,
• 各個数𝑖における事後分布𝑝 𝝁 𝑖 に従って乱数𝑟 𝑖 を生成.
• 𝑟 𝑖 が最も大きい𝑖を次の実験の個数とする.
58
- 59. 探す ― ベイズ最適化 の まとめ
• “探す”は奥が深い!
• StanとMCMCサンプルを使えばベイズ最適化は
難しくない.
• ただし, 高速ではない.
参考文献
• 本多淳也, 中村篤祥(2016) 『バンディット問題の理論とアルゴ
リズム』
• 𝒢𝒢のちょっと古いStanコードは以下を参照.
http://statmodeling.hatenablog.com/entry/gaussian-process-2
• マルコフ場モデルのStanコードは12.6節と以下を参照.
http://statmodeling.hatenablog.com/entry/state-space-model-
unequal-interval
59
- 66. 第一種の過誤 < 0.05 に抑えるためには
• 事前に解析計画書を書く.
• そこからはずれた解析はしない.
• シミュレーションでも 第一種の過誤 < 0.05 になるこ
とを確認しておく.
66
- 67. 検出力 > 0.8 にするためには
• 例数設計(sample size calculation)をする.
• シミュレーションでも 検出力 > 0.8 になることを確認
しておく.
67
シミュレーションデータはどうやって作る?
- 69. 発生させる ― シミュレーション の まとめ
• p-hackingは 「ダメ。ゼッタイ。」
• きちんと例数設計しよう.
• MCMCサンプルを使って
例数設計シミュレーションの幅を広げよう.
参考文献
• 奥村晴彦(2016) 『Rで楽しむ統計』 特に3章, 6章, 7章
69