Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モンテカルロ法(2) 誤差解析と不偏推定量 / Simulation 03

モンテカルロ法(2) 誤差解析と不偏推定量 / Simulation 03

シミュレーション工学

kaityo256

April 24, 2023
Tweet

More Decks by kaityo256

Other Decks in Education

Transcript

  1. 2 64 はじめに • エラーバーとは何か、どのような性質を持つ かを理解する • 統計誤差と系統誤差について理解する • 系統誤差を除去する(Jackknife法)

    本講義の目的 測定と誤差 • 一般に測定値には実験誤差がある • 数値計算においても、測定結果は誤差を伴う • 「誤差」の理解は難しい
  2. 3 64 エラーバーとは ある回路の電流を6回測定したら、以下のデータ[mA]を得た 1.16, 1.13, 1.12, 1.12, 1.11, 1.08

    この回路の電流の観測値は? 1.12 ± 0.01 mA 観測値 エラーバー 大雑把な意味:観測値の1.1までは自信があるが、小数点 第二位は自信がなく、1.11かもしれないし1.13かもしれない 正確な定義は?
  3. 5 64 エラーバーとは 母集団の特徴量(平均や分散)を知りたい 𝑓(𝑋) ത 𝑋 𝜎 ത 𝑋

    = ∫ 𝑋𝑓 𝑋 𝑑𝑋 分布の1次のモーメント 𝜎2 = ∫ 𝑋 − ത 𝑋 2𝑓 𝑋 𝑑𝑋 手元にあるのは𝑁個の標本{𝑋𝑖 } 標本から特徴量を得る関数を推定量(estimator)と呼ぶ 分布の2次のモーメント
  4. 6 64 エラーバーとは 平均値 ത 𝑋 = 1 𝑁 ෍

    𝑖 𝑁 𝑋𝑖 母分散 𝜎2 = 1 𝑁 − 1 ෍ 𝑖 𝑁 𝑋𝑖 − ത 𝑋 2 平均値の 推定値の分散 𝜎ത 𝑋 2 = 1 𝑁(𝑁 − 1) ෍ 𝑖 𝑁 𝑋𝑖 − ത 𝑋 2 推定したい量 そのestimator ※ NではなくN-1で割るのは不偏分散を求めるため
  5. 7 64 エラーバーとは 1.12 ± 0.01 mA 0.01 平均値の推定値の分散の平方根をエラーバーとする ത

    𝑋 ± 𝜎ത 𝑋 2 エラーバーの意味は? 平均値の推定値の標準偏差を誤差とみなす
  6. 10 64 中心極限定理 𝜎2 = 1 𝑁 − 1 ෍

    𝑖 𝑁 𝑋𝑖 − ത 𝑋 2 サンプル数𝑁を増やした時 lim 𝑁→∞ 𝜎2 = const. 母分散のestimatorは一定値に収束する 平均値の推定値の分散のestimatorは1/𝑁の早さで ゼロに収束する 𝜎ത 𝑋 2 = 𝜎2 𝑁 lim 𝑁→∞ 𝜎ത 𝑋 2 = 0
  7. 11 64 ガウス分布 𝑓(𝑥) 𝜎 𝑥 𝑓 𝑥 = 1

    2𝜋𝜎2 exp − 𝑥 − 𝜇 2 2𝜎2 𝜇 平均𝜇、分散𝜎2のガウス分布 平均𝜇:分布の中心の位置 標準偏差𝜎:分布の幅
  8. 12 64 ガウス分布 𝑃 𝑎 < ෠ 𝑋 < 𝑏

    = න 𝑎 𝑏 𝑓 𝑥 𝑑𝑥 確率変数 ෠ 𝑋の値がaとbの間にある確率が で与えられる時、𝑓 𝑥 を ෠ 𝑋の確率密度関数と呼ぶ 確率密度関数が平均𝜇、分散𝜎2のガウス分布である時 𝜇 − 𝜎 < 𝑥 < 𝜇 + 𝜎 の範囲を1シグマの範囲と呼ぶ
  9. 13 64 ガウス分布 𝑓 𝑥 = 1 2𝜋𝜎2 exp 𝑥

    − 𝜇 2 2𝜎2 であるとき、 𝑃 𝜇 − 𝜎 < ෠ 𝑋 < 𝜇 + 𝜎 = න 𝜇−𝜎 𝜇+𝜎 𝑓 𝑥 𝑑𝑥 ∼ 0.6827 平均𝜇、分散𝜎2のガウス分布に従う確率変数が、 平均の周りに𝜎の間で揺らぐ確率が68.27% ex) テストで偏差値40~60までの間の人が68.27%
  10. 15 64 ガウス分布 𝜇 − 𝑛𝜎 < 𝑥 < 𝜇

    + 𝑛𝜎 同様に「nシグマの範囲」が定義できる 1シグマ:入る確率 68.27% 外れる確率 31.73% 2シグマ:入る確率 95.45% 外れる確率 4.55% 3シグマ:入る確率 99.73% 外れる確率 0.27% 5シグマ:入る確率 99.9994% 外れる確率 0.0005%
  11. 16 64 エラーバーのまとめ • エラーバーとは観測値を確率変数とみなした時に、 その平均値の分布の推定標準偏差のこと • サンプル数を増やせば増やすほど、エラーバーは 小さくなる •

    観測値が独立同分布なら、サンプル数を増やして いくと平均値の分布はガウス分布に漸近する • 平均𝜇、分散𝜎2のガウス分布について、以下を「n シグマの範囲」と呼ぶ • ガウス分布に従う確率変数が独立であるなら • 「1シグマの範囲」からは3つに1つは外れる • 「5シグマの範囲」から外れる確率はほぼゼロ 𝜇 − 𝑛𝜎 < 𝑥 < 𝜇 + 𝑛𝜎
  12. 21 64 おかしいグラフ1 import numpy as np N = 10

    np.random.seed(1) for i in range(10): x = i + 0.5 d = np.zeros(N) d += np.exp(-x/3) d += np.random.randn(N)*0.1 y = np.average(d) e = np.std(d) print(f"{x} {y} {e}") 先ほどのデータを生成したコード エラーバーとしてnumpy.stdを そのまま使っている 平均値の推定誤差ではなく、母集団の標準偏差を求めてしまっている
  13. 22 64 おかしいグラフ1 import numpy as np N = 10

    np.random.seed(1) for i in range(10): x = i + 0.5 d = np.zeros(N) d += np.exp(-x/3) d += np.random.randn(N)*0.1 y = np.average(d) e = np.std(d)/np.sqrt(N) print(f"{x} {y} {e}") 𝜎 ത 𝑋 = 𝜎 𝑁 これが正しいコード
  14. 26 64 おかしいグラフ2 import numpy as np np.random.seed(1) N =

    2048 d = np.random.random(N) for i in range(4, 12): n = 2**i dd = d[:n] ave = np.average(dd) err = np.std(dd)/np.sqrt(n) print(f"{n} {ave} {err}") 先ほどのデータを生成したコード 先に全データを作成し、部分配列に ついて誤差を計算している
  15. 28 64 適切なグラフ import numpy as np np.random.seed(1) N =

    2048 for i in range(4, 12): n = 2**i dd = np.random.random(n) ave = np.average(dd) err = np.std(dd)/np.sqrt(n) print(f"{n} {ave} {err}") データ点ごとに異なる データセットを生成している データを適切に生成するコード
  16. 32 64 おかしなグラフ3 import numpy as np N = 1000

    v = 0.0 gamma = 0.1 np.random.seed(1) for j in range(10): d = np.zeros(N) for i in range(N): v += np.random.randn()*0.1 v -= gamma * v d[i] = v ave = np.average(d) err = np.std(d) / np.sqrt(N) print(f"{(j+0.5)*N} {ave} {err}") ランジュバン方程式の数値解法 𝑚 𝑑𝑣 𝑑𝑡 = −𝛾𝑣 + ෠ 𝑅 𝑣 1000ステップごとに平均、標準偏差を計算するコード
  17. 39 64 不適切なグラフのまとめ データがガウス分布に従い、かつ独立であるなら • 観測値は「真の値」の上下に均等にばらつく • 観測値の3つに1つが「真の値」の1シグマの範囲に入らな い •

    観測値と「真の値」がエラーバーの2倍離れることは稀、5 倍離れることはまずない 逆に • 観測値の全てが「真の値」をエラーバーの範囲に含む • 「真の値」の片側に連続してずれている • 「真の値」と5シグマ以上離れている であるなら、何かがおかしい エラーバーがおかしいグラフは、データの相関が原因であることが多い
  18. 40 64 不偏推定量とJackknife法 M個のデータがある それをN個ずつのブロックに分割する 𝑁 𝜇𝑀/𝑁 𝜇1 𝜇2 それぞれのブロックで期待値を計算する

    期待値の期待値を計算する 𝜇 = 𝑁 𝑀 ෍ 𝑖 𝜇𝑖 𝑀 ブロックサイズ𝑁を変えた時 𝜇 は変わるか?
  19. 41 64 不偏推定量とJackknife法 𝜇 = 𝑁 𝑀 ෍ 𝑖 𝜇𝑖

    𝜇𝑖 = 1 𝑁 ෍ 𝑘∈𝑖 𝑋𝑘 ブロックごとの期待値 期待値の期待値 𝜇 = 1 𝑀 ෍ 𝑗 𝑋𝑗 単なる全体の平均になる 𝜇 は𝑁依存性をもたない
  20. 42 64 不偏推定量とJackknife法 𝜇1 𝜇2 それぞれのブロックで期待値を計算する ⋯ 1/𝜇1 ⋯ 1/𝜇2

    それぞれのブロックの期待値の逆数を計算する 期待値の逆数の期待値を計算する 1/𝜇 = 𝑁 𝑀 ෍ 𝑖 1 𝜇𝑖 1/𝜇 は𝑁依存性を持つか?
  21. 44 64 不偏推定量とJackknife法 サイコロを65536回振る 4個ずつ分割 8個ずつ分割 16個ずつ分割 ・・・ ・・・ ・・・

    ・・・ 各ブロックで期待値𝜇𝑖 を計算し、その逆数の期待値を計算する
  22. 46 64 統計誤差と系統誤差 誤差(真値からのずれ)には、統計誤差と系統誤差の二種類がある 統計誤差 (statistical error) • 我々が制御できない要因により値が揺らぐこと(偶然誤差) •

    数値計算では乱数や粗視化に起因 • 不確かさ(uncertainty)とも 系統誤差 (bias, systematic error) • 誤差を生む要因が説明できるもの • 決定論的なずれ • 数値計算では有限サイズ効果や理論誤差などに起因
  23. 47 64 統計誤差と系統誤差 このデータがずれて いるのは偶然 統計誤差 このデータがずれて いるのは必然 系統誤差 •

    この系統誤差はどこからくるのか? • どうやって減らすか を知るのがこの節の目的
  24. 48 64 期待値の関数 N回測定して期待値を推定する(これも確率変数) 確率変数 ෠ 𝑋の期待値𝜇の関数の値を推定したい 𝑦 = 𝑔(𝜇)

    ො 𝜇𝑁 = 1 𝑁 ෍ 𝑖 𝑋𝑖 推定値の期待値は期待値に一致する 𝑔(ො 𝜇𝑁 ) ≠ 𝑔 𝜇 Ƹ 𝜇𝑁 = 𝜇 推定値の関数の期待値は期待値の関数と一致しない
  25. 49 64 不偏推定量 標本から得られた推定量(estimator)の期待値が 母集団の期待値と一致する時、その推定量を 不偏推定量(unbiased estimator)と呼ぶ ො 𝜇𝑁 =

    1 𝑁 ෍ 𝑖 𝑁 𝑋𝑖 例:確率変数 ෠ 𝑋の𝑁個のサンプル{𝑋𝑖 }から母集団{ ෠ 𝑋}の 期待値𝜇と分散𝜎2を求めたい ො 𝜎𝑁 2 = 1 𝑁 ෍ 𝑖 𝑁 (𝑋𝑖 −ො 𝜇𝑁 ) Ƹ 𝜇𝑁 = 𝜇 期待値は一致する(不偏推定量) ො 𝜎𝑁 2 = 𝑁 − 1 𝑁 𝜎2 ≠ 𝜎2 分散は一致しない(不偏推定量ではない) 期待値の推定値を 使っているのがポイント
  26. 50 64 期待値の関数 一般に確率変数 ෠ 𝑋 について 𝑔( ෠ 𝑋)

    ≠ 𝑔 ෠ 𝑋 と 𝑔( ෠ 𝑋) 関数の期待値 期待値の関数 𝑔 ෠ 𝑋 は 一致しない 期待値の関数は、期待値の関数の不偏推定量ではない
  27. 51 64 Jensenの不等式 μ 𝑔(𝑥)を上に凸な関数とし、𝑥 = 𝜇で接線をひく 𝑦 = 𝑎

    𝑥 − 𝜇 + 𝑔(𝜇) 𝑦 = 𝑔(𝑥) ※ Thanks to @genkuroki 上図より明らかに 𝑔 𝑥 ≤ 𝑎 𝑥 − 𝜇 + 𝑔(𝜇) 両辺の期待値を取れば 𝑔 𝑥 ≤ 𝑔 𝜇 = 𝑔( 𝑥 ) 下に凸の場合は符号が逆になる
  28. 52 64 期待値の関数 𝜀 = Ƹ 𝜇𝑁 − 𝜇 Ƹ

    𝜇𝑁 = 1 𝑁 ෍ 𝑖 ෠ 𝑋𝑖 N回の測定で得られた期待値の推定量 真の期待値とのずれ 𝑔 Ƹ 𝜇𝑁 − 𝑔 𝜇 = 𝑔 𝜇 + 𝜀 − 𝑔 𝜇 = 𝑔′ 𝜇 𝜀 + 1 2 𝑔′′ 𝜇 𝜀2 + 𝑂(𝜀3) 𝑔 Ƹ 𝜇𝑁 − 𝑔 𝜇 ∼ 1 2 𝑔′′ 𝜇 𝜀2 = 𝑔′′(𝜇)𝜎2 2𝑁 真の値 推定値 推定値と真の値のずれの期待値 N依存性 期待値の推定値の分散
  29. 53 64 期待値の関数 𝑔 Ƹ 𝜇𝑁 − 𝑔 𝜇 ∝

    1 𝑁 𝑁個 のサンプルから推定した期待値の関数と、 真の期待値の関数のずれは1/𝑁に比例する これを1/Nバイアスと呼ぶ 𝑔 Ƹ 𝜇𝑁 − 𝑔 𝜇 ∼ 𝑔′′(𝜇)𝜎2 2𝑁 関数𝑔 𝑥 の二階微分がゼロ(線形)である場合はバイアスは生じない 特に𝑔 𝑥 = 𝑥の場合 Ƹ 𝜇𝑁 = 𝜇
  30. 54 64 1/Nバイアスの具体例 平均0、分散𝜎2のガウス分布に従う確率変数Xを考える ෠ 𝑋2 = 𝜎2 ෠ 𝑋4

    = 3𝜎4 2次のモーメント 4次のモーメント 4次と2次のモーメントの比を取ると、分散依存性が消える ෠ 𝑋4 ෠ 𝑋2 2 = 3 尖度(Kurtosis) この量の1/Nバイアスを確認する
  31. 55 64 1/Nバイアスの具体例 ෠ 𝑋2 𝑁 = 1 𝑁 ෍

    𝑖 ෠ 𝑋𝑖 2 ෠ 𝑋4 𝑁 = 1 𝑁 ෍ 𝑖 ෠ 𝑋𝑖 4 N個のサンプリング(N回の測定)で得られたデータから 2次と4次のモーメントを推定する ෡ 𝑈𝑁 = ෠ 𝑋4 𝑁 ෠ 𝑋2 𝑁 2 得られたモーメントから尖度を計算する 上記を十分に繰り返して෡ 𝑈𝑁 の期待値 ෡ 𝑈𝑁 を計算する 統計誤差を消し、系統誤差だけを残す
  32. 57 64 統計誤差と系統誤差 不偏推定量ではあるが、ばらつきのせいで真の値 からずれる誤差を統計誤差と呼ぶ Ƹ 𝜇𝑁 = 1 𝑁

    ෍ 𝑖 ෠ 𝑋𝑖 Ƹ 𝜇𝑁 − 𝜇 = 𝑂(1/ 𝑁) 不偏推定量でない推定量の期待値について、真の値 からのずれを系統誤差(バイアス)と呼ぶ。 𝑔( Ƹ 𝜇𝑁 ) − 𝑔 𝜇 = 𝑂(1/𝑁) サンプル数を増やすと統計誤差は減るが、 系統誤差は減らせない
  33. 59 64 バイアス除去 N個のデータがある 𝑁 全部のデータを使って期待値𝜇𝑁 を計算 それを使って関数の推定値𝑈𝑁 = 𝑔(𝜇𝑁

    )を計算 1個のデータを捨てる 𝑁 − 1 残りのデータを使って期待値𝜇𝑁−1 を計算 それを使って関数の推定値𝑈𝑁−1 = 𝑔(𝜇𝑁−1 )を計算
  34. 60 64 バイアス除去 𝑈𝑁 は、真の値𝑈∞ に対して1/Nバイアスがあると仮定 𝑈𝑁 = 𝑈∞ +

    𝑎/𝑁 一つデータを捨てて得た𝑈𝑁 のバイアスは 𝑈𝑁−1 = 𝑈∞ + 𝑎/(𝑁 − 1) この2式から𝑈∞ を求めると 𝑈∞ = 𝑁𝑈𝑁 − (𝑁 − 1)𝑈𝑁−1 ※ Thanks to smorita and yomichi
  35. 62 64 Jackknifeリサンプリング 1個のデータ除外して計算 せっかくのデータを捨てるのはもったいないので活用する 𝑈𝑁−1 1 𝑈𝑁−1 2 別のデータ除外して計算

    ・ ・ ・ 𝑈𝑁−1 𝑁 𝑈𝑁−1 = 1 𝑁 ෍ 𝑖 𝑈𝑁−1 𝑖 精度の高い「N-1個のデータの推定量」 が得られる
  36. 64 64 まとめ • 母集団の何かを推定する量を推定量(estimator)と呼ぶ • 誤差には統計誤差と系統誤差(バイアス)がある • その期待値が母集団の期待値に一致する量(バイアスが無い 量)を不偏推定量(unbiased

    estimator)と呼ぶ • 期待値の関数の単純な推定は不偏推定量を与えない • リサンプリングによりバイアスを除去できる • Jackknife法はリサンプリング法の一種