モンテカルロサンプリング

7,411 views
6,968 views

Published on

First part shows several methods to sample points from arbitrary distributions. Second part shows application to population genetics to infer population size and divergence time using obtained sequence data.

Published in: Education
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,411
On SlideShare
0
From Embeds
0
Number of Embeds
198
Actions
Shares
0
Downloads
62
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

モンテカルロサンプリング

  1. 1. モンテカルロサンプリング kos59125 [2011-08-27] Nagoya.R#6 © RecycleBin
  2. 2. レジュメ• 自己紹介• モンテカルロサンプリングの概要説明• 具体的な方法の紹介 – 直接的方法 – 間接的方法• 集団遺伝学での応用例 © RecycleBin
  3. 3. 自己紹介• 専門: 集団遺伝学• 趣味プログラマ• R の位置づけ – DIS ■■□□□□□□□□ LOVE © RecycleBin
  4. 4. R コミュニティ活動• Nagoya.R: 発表 4 回 – 今回で 5 回目• Tokyo.R: 発表 1 回• R.NET: コーディネーター – 開発協力者募集中 © RecycleBin
  5. 5. モンテカルロサンプリング © RecycleBin
  6. 6. モンテカルロ法• 乱数を用いる数値計算法の総称• カジノの街モンテカルロ (Monte Carlo) に由来 – 英語では Monte Carlo method と MC が大文字 Wikimedia Commons より引用 © RecycleBin
  7. 7. モンテカルロ法• 計算時間が多項式時間• 得られた結果は必ずしも正しい答えではない – 試行回数を増やすことで精度が上がる © RecycleBin
  8. 8. モンテカルロサンプリング• モンテカルロ法を用いて目的とする確率分布から のサンプリングを行う• 使いどころ – 確率分布の理論式が扱いづらい – 確率分布の理論式を知らない © RecycleBin
  9. 9. サンプリングの方法 © RecycleBin
  10. 10. 注意• 本スライドではいくつかのサンプリングアルゴリズム を例示しますが,必ずしも最善の手法を示してい るわけではありません• R には様々な関数やパッケージが用意されている ので,利用できるならそちらを利用しましょう © RecycleBin
  11. 11. 直接的方法 © RecycleBin
  12. 12. 戦略• ある分布にしたがう乱数は容易に得られる – 例えば一様分布 U(0, 1)• 得られる乱数を用いて,目的分布からサンプリン グを行う © RecycleBin
  13. 13. 変換法• 乱数: z• 変換式: f• f(z) は目的分布にしたがう• サンプリング手順 1. 乱数 z を生成する 2. f(z) を得る © RecycleBin
  14. 14. 例題• 指数分布 Exp(1) – 密度関数: exp(–x) © RecycleBin
  15. 15. 例題• 指数分布 Exp(1) – 密度関数: exp(–x)• 逆関数法 – 一様乱数 u ~ U(0, 1) – 変換式 f(u) = –ln(1–u) • Exp(1) の累積分布関数: 1 – exp(–x) • u = 1–exp(–x) を x について解くと x = f(u) © RecycleBin
  16. 16. 図解 © RecycleBin
  17. 17. Ru <- runif(1000)x <- -log(1 - u) © RecycleBin
  18. 18. 結果 © RecycleBin
  19. 19. 利点・欠点利点 欠点• 計算が軽い • 一般に累積分布関数の逆 – 無駄な計算がない 関数を求めることは困難 © RecycleBin
  20. 20. 棄却サンプリング法• 目的分布の密度関数: π(x)• 提案分布の密度関数: g(x)• 定数 c が存在してすべての x で π(x) ≦ cg(x) が成り立つ• サンプリング手順 1. x* ~ g(x) および u ~ U(0, 1) を生成 2. u ≦ π(x*)/cg(x*) なら x* を受容,そうでなけ れば棄却して 1 に戻る © RecycleBin
  21. 21. 例題• レイリー分布 Rayleigh(1) – 密度関数: π(x) = x exp(–x2/2) © RecycleBin
  22. 22. 例題• レイリー分布 Rayleigh(1) – 密度関数: π(x) = x exp(–x2/2)• 提案分布: 指数分布 Exp(1) – 密度関数: g(x) = exp(–x)• 定数: c = max π(x)/g(x) ≒ 2.2 – x = (1+√5)/2 で最大 © RecycleBin
  23. 23. 図解 © RecycleBin
  24. 24. 図解 © RecycleBin
  25. 25. Rdrayleigh <- function(x) x * exp(-x*x/2)argmax <- (1+sqrt(5)) / 2k <- drayleigh(argmax) / dexp(argmax)ratio <- function(x) drayleigh(x) / (k * dexp(x))proposal <- rexp(5000)u <- runif(5000)acceptance <- proposal[u <= ratio(proposal)] © RecycleBin
  26. 26. 結果 © RecycleBin
  27. 27. 利点・欠点利点 欠点• 実装が容易 • π(x)/cg(x) が小さいと受 容率が低くなり,効率が悪く なる – 分布の端 – 高次元 © RecycleBin
  28. 28. マルコフ連鎖モンテカルロ法• マルコフ連鎖 – 直前の状態からのみ,次の状態が定まる• 特定の条件を満たすマルコフ連鎖は,均衡分布 に収束する – 均衡分布が目的分布となるようにマルコフ連鎖を設 計 © RecycleBin
  29. 29. マルコフ連鎖モンテカルロ法• 連鎖の設計 – ギブスサンプラー – メトロポリス・ヘイスティング法• サンプリング手順 1. 初期値および連鎖を定める 2. 連鎖からサンプリング • 初期値に依存する最初の何ステップかは棄てる © RecycleBin
  30. 30. 例題• 2 変量正規分布 – 平均: (0, 0),分散: (12, 12),共分散: 0.7 © RecycleBin
  31. 31. 例題• 2 変量正規分布 – 平均: (0, 0),分散: (12, 12),共分散: 0.7• ギブスサンプラー – 初期値: (x1, y1) = (–10, –10) – xt ~ N(0.7 yt–1, 12 – 0.72/12) – yt ~ N(0.7 xt, 12 – 0.72/12) – 最初の 500 ステップを棄てて 500 ステップ © RecycleBin
  32. 32. 図解 © RecycleBin
  33. 33. 図解 © RecycleBin
  34. 34. Rx <- vector("numeric", 1000)y <- vector("numeric", 1000)x[1] <- -10; y[1] <- -10dev <- sqrt(1^2 - 0.7^2/1^2)for (index in 2:1000) { x[index] <- rnorm(1, 0.7*y[index-1], dev) y[index] <- rnorm(1, 0.7*x[index], dev)}x <- x[-(1:500)]; y <- y[-(1:500)] © RecycleBin
  35. 35. 結果 © RecycleBin
  36. 36. 利点・欠点利点 欠点• 高次元に対応可能 • 収束判定が必要 • 並列化が困難 © RecycleBin
  37. 37. その他の方法• 重点サンプリング法• 逐次モンテカルロ法 © RecycleBin
  38. 38. 間接的方法 © RecycleBin
  39. 39. 戦略• 真の分布からサンプリングを行いたいが,分布に 関する知見が不足している• 真の分布を近似するような分布を見つけ,その分 布からサンプリングを行う © RecycleBin
  40. 40. シミュレーション• 目的分布にしたがうサンプルが得られるようなシ ミュレーションを行う• サンプリング手順 1. シミュレーションを行い,結果をサンプリング © RecycleBin
  41. 41. 例題• 正規分布 N(0, 12) © RecycleBin
  42. 42. 例題• 正規分布 N(0, 12)• 中心極限定理の利用 1. 12 個の一様乱数 u1,..., u12 ~ i.i.d. U(0, 1) • 平均 1/2,分散 1/12 • ū は近似的に N(6, 1/122) にしたがう 2. 合計から 6 を引いた値をサンプリング • 12ū – 6 は近似的に N(0, 12) にしたがう © RecycleBin
  43. 43. Rsimulation <- function(...) sum(runif(12)) - 6x <- sapply(vector(length=1000), simulation) © RecycleBin
  44. 44. 結果 © RecycleBin
  45. 45. 利点・欠点利点 欠点• 目的分布についての知見が • 計算が重い ほとんどいらない © RecycleBin
  46. 46. 近似ベイズ計算• 事後分布 f(θ|D) ∝ P(D|θ)π(θ) において 尤度 P(D|θ) を求めることが困難 – 解析的に求められない – 計算コストが大きすぎる• θ を与えればシミュレーションデータ D’ が容易 に生成できる © RecycleBin
  47. 47. 近似ベイズ計算• 尤度をシミュレーションで求める – #(D = D’) / #(試行) – 現実的でない試行回数が必要• データ間距離 ρ(D, D’) が小さければ良い – f(θ|D = D’) を f(θ|ρ(D, D’) ≦ ε) で近似 – 普通は ρ(D, D’) が定義しづらいので D の代わり に適当な統計量 S(D) を用いる © RecycleBin
  48. 48. 近似ベイズ計算• サンプリング法 – 棄却サンプリング法 – マルコフ連鎖モンテカルロ法• サンプリング手順 (棄却サンプリング) 1. 事前分布からサンプリング 2. データをシミュレーション (統計値を計算) 3. ρ≦ε なら受容,そうでなければ棄却して 1 に戻る © RecycleBin
  49. 49. 例題• 混合正規分布 – 密度関数: 0.5 * φ(–2, 12) + 0.5 * φ(2, 12) © RecycleBin
  50. 50. 例題• 混合正規分布 – 密度関数: 0.5 * φ(–2, 12) + 0.5 * φ(2, 12)• 事前分布: N(0, 52)• 距離: |x – μ| – x ~ N(θ, 12) | θ ~ 事前分布 – μ: –2 または 2 を等確率で採択• 許容誤差: 0.01 © RecycleBin
  51. 51. Rx <- vector("numeric")while(length(x) < 1000) { n <- 1000 - length(x) prior <- rnorm(n, 0, 5) distance <- abs( rnorm(n, prior) - ifelse(runif(n) <= 0.5, -2, 2) ) x <- c(x, prior[distance <= 0.01])} © RecycleBin
  52. 52. R (高速版)x <- vector("numeric")while(length(x) < 1000) { n <- 1000 - length(x) prior <- rnorm(n, 0, 5) distance <- abs( rnorm(n, prior) + 2 + (-2 - 2) * (runif(n) <= 0.5) ) x <- c(x, prior[distance <= 0.01])} © RecycleBin
  53. 53. 結果 © RecycleBin
  54. 54. 利点・欠点利点 欠点• 目的分布についての知見が • 上手に設計できないと,受容 ほとんどいらない 率は極端に低い – 特に尤度が不要 • 選んだ距離が解析結果に影 響 © RecycleBin
  55. 55. おわりに © RecycleBin
  56. 56. サンプリングの正しさ• コーディングに人為的ミスはつきもの• 統計的検定 – コルモゴロフ・スミルノフ検定 – シミュレーションによる方法 © RecycleBin
  57. 57. まとめ• モンテカルロ法を用いて複雑な分布からのサンプ リングが容易にできる• さまざまな方法があるので,自分の目的にあった 手法を選択する © RecycleBin
  58. 58. 集団遺伝学での応用例 © RecycleBin
  59. 59. 集団遺伝学• 生物集団 – 単一種の生物個体の集まり• 集団遺伝学 – 集団における遺伝的組成 (対立遺伝子頻度など) の変化を研究する学問領域 © RecycleBin
  60. 60. コアレセント理論• すべての対立遺伝子は,単一の祖先対立遺伝 子に由来 : 突然変異現在 過去 © RecycleBin
  61. 61. 遺伝的分化• 2 つの集団を比較すると,集団間には遺伝的組 成に違いが観察される © RecycleBin
  62. 62. コアレセントシミュレーション• デモグラフィーの歴史を仮定することで,遺伝 データをシミュレーションできる現在 分化 過去 © RecycleBin
  63. 63. デモグラフィーの推定• 近似ベイズ計算による推定 – シミュレーションして生成した遺伝データの統計量を 計算して観察データと比較 – パラメーター • 集団内の個体数 (集団サイズ) • 分化時間 • 分集団間の遺伝的交流の程度 (移住) • その他 © RecycleBin
  64. 64. 例 © RecycleBin
  65. 65. 材料種• Hana mogera (Tamoreae) ※架空の生物 – 移住なしの理想集団集団 1 2N 2aN集団 2 2rN 0 T © RecycleBin
  66. 66. 観察データ• 自然選択に対して中立な 30 遺伝子座の塩基 配列 – 遺伝子座あたりの突然変異率: 10-5 – 各集団 20 配列ずつ• 集団ごとに多型サイト数 (S) および平均塩基 相違数 (Π) を計算 © RecycleBin
  67. 67. 観察データ• 本スライドではコアレセントシミュレーションにより 架空のデータを生成・利用 – (N, r, a, T) = (80000, 0.1, 3.0, 1.0) – (S1, Π1, S2, Π2) = (15.4, 2.9, 8.9, 0.3) © RecycleBin
  68. 68. サンプリングの手順1. パラメーター (N, r, a, T) を生成 – N ~ U(0, 400000) – r ~ U(0, 2) – a ~ U(0, 5) – T ~ U(0, 2)2. コアレセントシミュレーションを行い,集団 1, 2 の遺伝データを生成3. 統計量 (S1’, Π1’, S2’, Π2’) を計算 © RecycleBin
  69. 69. サンプリングの手順4. それぞれの統計量の誤差が 10% 以内ならパ ラメーターを受容 – S1: |15.4 – S1’| ≦ 1.54 – Π1: |2.9 – Π1’| ≦ 0.29 – S2: |8.9 – S2’| ≦ 0.89 – Π2: |0.3 – Π2’| ≦ 0.035. パラメーターが 1,001 組に達するまで繰り返 す © RecycleBin
  70. 70. 結果 © RecycleBin
  71. 71. まとめ• 集団遺伝の確率プロセスは複雑 – シミュレーションは容易• 近似ベイズ計算を用いて尤度計算を回避するこ とで,デモグラフィーの歴史が推定できる © RecycleBin
  72. 72. 主要参考文献• 大森 (2001) 『マルコフ連鎖モンテカルロ法の 最近の展開』• Cosma & Evers (2010) Markov Chains and Monte Carlo Methods. © RecycleBin
  73. 73. 謝辞• yatsuta 様 – 本スライドをレビューしていただきました © RecycleBin

×