🎓 レベル:標準 | 重要度:A(必須)
📎 前提:シミュレーションとは(決定的 vs 確率的) | 関連:収束率と誤差(√n則) | 推定量の信頼区間
要点(BLUF)
- モンテカルロ法は2つの定理に支えられます。大数の法則(LLN)=標本平均は真の期待値に収束する(推定の正しさ=一致性)。
- 中心極限定理(CLT)=その誤差は近似的に正規分布で、標準偏差は (誤差の大きさと形)。
- サイコロの走る平均は 10万回で 3.498(真値 3.5)に収束。標本平均の標準偏差は CLT の予言 0.0527 とほぼ一致(実測 0.0525)。
1. 二本の支柱
モンテカルロ法の戦略は「求めたい量 を、ある確率変数 の期待値 として表し、独立標本 の標本平均 で近似する」ことでした(シミュレーションとは(決定的 vs 確率的))。この近似が正当化されるのは、次の2つの定理があるからです。
- 大数の法則(LLN): で (確率収束)。→ 推定は真値に近づく(一致性)。
- 中心極限定理(CLT): は近似的に正規分布 に従う。→ 誤差は オーダーで、正規分布の形。
LLN が「収束する」ことを、CLT が「どれくらいの速さ・誤差で収束するか」を教えます。確率論の厳密な証明は統計分野に譲り、ここではシミュレーションでの役割を実証します。
2. 大数の法則:走る平均は真値に収束する
サイコロの目(期待値 )を繰り返し振り、 回目までの平均を見ます。
import numpy as np
# 乱数シードを固定
rng = np.random.default_rng(0)
rolls = rng.integers(1, 7, 100_000) # 1..6 を10万回
running_mean = np.cumsum(rolls) / np.arange(1, len(rolls)+1)
for n in [10, 100, 1000, 10000, 100000]:
print(f"n={n:>6}: 走る平均 = {running_mean[n-1]:.4f} (真値 3.5)")
出力:
n= 10: 走る平均 = 2.8000 (真値 3.5)
n= 100: 走る平均 = 3.6200 (真値 3.5)
n= 1000: 走る平均 = 3.6000 (真値 3.5)
n= 10000: 走る平均 = 3.5045 (真値 3.5)
n=100000: 走る平均 = 3.4980 (真値 3.5)
出力の意味: では 2.80 と大きくずれていますが、 が増えるほど 3.5 に収束していきます(10万回で 3.498)。これが大数の法則です。注目すべきは収束がゆっくりな点で、 を10倍にしても誤差はおおよそ 分の1にしかなりません。
3. 中心極限定理:誤差の大きさを定量化する
CLT は誤差の「大きさ」を教えます。一様分布 (平均 0.5、分散 )から大きさ の標本を取り、その平均を 5万回作って、平均値の散らばりを見ます。
import numpy as np
# 乱数シードを固定
rng = np.random.default_rng(1)
m = 30 # 1標本の大きさ
reps = 50_000 # 標本平均を作る回数
means = rng.random((reps, m)).mean(axis=1) # 各行が大きさ30の標本平均
print(f"標本平均の平均 = {means.mean():.4f} (真値 0.5)")
print(f"標本平均の標準偏差 = {means.std():.4f}")
print(f"CLT予言の標準偏差 = {np.sqrt((1/12)/m):.4f}")
出力:
標本平均の平均 = 0.5000 (真値 0.5)
標本平均の標準偏差 = 0.0525
CLT予言の標準偏差 = 0.0527
出力の意味:標本平均そのものの平均は 0.5(LLN)。その散らばり(標準偏差=標準誤差)は実測 0.0525 で、CLT が予言する とほぼ一致。つまり「もとの は正規でなくても、平均を取ると正規に近づき、その散らばりは 」という CLT の二段の主張が両方確認できました。
4. シミュレーションへの含意
- 一致性(LLN):サンプルを増やせば推定は必ず真値に近づく。だから「答えの分かる縮小版」での検証が成立する。
- 則(CLT):誤差は 。精度を1桁上げるにはサンプル100倍。これがモンテカルロが「遅い」と言われる根拠であり、分散減少法で 自体を小さくする動機です(収束率と誤差(√n則))。
- 誤差の評価(CLT):正規近似のおかげで が 95% 信頼区間になり、推定に「±いくつ」を付けられる。
数式の直観的意味
LLN は「偶然のブレは平均化で打ち消し合う」という主張、CLT は「打ち消し残りの揺らぎは正規分布に従い、 で縮む」という主張です。標本平均の分散が になるのは、独立な 個の和の分散が 、それを で割ると だから。標準偏差はその平方根で ——ここから 則が出るのがモンテカルロ誤差論の核心です。
⚠️ よくある誤解・落とし穴
- 「サンプルを2倍にすれば誤差が半分」ではない:誤差は 。半分にするにはサンプル4倍が必要です。
- 「CLT は元の分布も正規でないと使えない」ではない:元が何であれ(有限分散なら)平均は正規に近づくのが CLT の威力。サイコロや一様でも成立します。
- 「分散が無限でも CLT が効く」ではない:分散が無限(コーシー分布など)だと標準的な CLT は成立せず、 則も崩れます。重い裾の分布では注意。
- 「LLN があるから少ない試行でも大丈夫」ではない:収束は遅い()。少数試行の平均は大きくブレ得ます(出力の で 2.8)。
対応シミュレーション参照
本文の LLN(サイコロ走る平均・default_rng(0))と CLT(一様の標本平均分布・default_rng(1))。収束率の詳細は収束率と誤差(√n則)へ。
関連ノート
- シミュレーションとは(決定的 vs 確率的)(前提・期待値として量を表す)
- 検証と妥当性確認(V&V)(一致性が検証を支える)
- 収束率と誤差(√n則)( 則の詳細)
- 推定量の信頼区間(CLT から信頼区間へ)
- 第1章 シミュレーションの基礎 目次
- シミュレーション・モンテカルロ法 全体目次