🎓 レベル:基礎 | 重要度:B(推奨)
📎 前提:モンテカルロ積分の原理 | 関連:制御変量法
要点(BLUF)
- ヒット・アンド・ミス法:領域を覆う矩形に点をばらまき、当たった割合で面積(=積分)を推定する素朴な方法。
- πの推定で直観的ですが、当たり判定(0/1のベルヌーイ)は情報を捨てるので、同じπを求める平均値法より分散が大きい(推定量の分散 2.70 対 0.80)。
- 結論:直観的だが非効率。実用では関数値をそのまま使う平均値法(モンテカルロ積分の原理)や分散減少法を優先します。
1. ヒット・アンド・ミス法とは
求めたい面積(積分)を、既知の面積の矩形で覆い、その矩形に一様に点を打って「求めたい領域に入った点の割合」を数えます。割合は面積比に収束するので、
円周率の推定がまさにこれでした。 の正方形に点を打ち、四分円(面積 )に入った割合を4倍して を得ます。各点は「入った(1)/外れた(0)」のベルヌーイ変数で、その平均が当たり確率 の推定です。
import numpy as np
# 乱数シードを固定
rng = np.random.default_rng(23)
n = 1_000_000
points = rng.random((n, 2))
inside = (points[:,0]**2 + points[:,1]**2) <= 1.0 # 当たり判定(0/1)
p = inside.mean()
pi_est = 4 * p
se_pi = 4 * np.sqrt(p*(1-p)/n) # 比率の標準誤差
print(f"ヒット・アンド・ミス pi = {pi_est:.5f} +/- {1.96*se_pi:.5f}")
出力:
ヒット・アンド・ミス pi = 3.14118 +/- 0.00322
出力の意味:100万点で を 3.14118、95%区間幅 ±0.0032 で推定。当たり判定はベルヌーイ試行なので、標準誤差は二項分布の から計算できます。直観は明快ですが、ここに非効率が潜んでいます。
2. 平均値法と比べると分散が大きい
同じπを、当たり判定ではなく関数値の平均で求められます。四分円の面積は なので、 の一様平均がπの推定になります(平均値法)。両者の推定量の分散を比べます。
import numpy as np
# 乱数シードを固定
rng = np.random.default_rng(24)
n = 1_000_000
# 平均値法:g(x)=4 sqrt(1-x^2) の平均
x = rng.random(n)
g = 4 * np.sqrt(1 - x**2)
print(f"平均値法 pi = {g.mean():.5f}")
# 1サンプルあたりの推定量分散を比較
p = np.pi/4
var_hit = 4**2 * p*(1-p) # ヒット・アンド・ミス(ベルヌーイ x4)の分散
var_avg = g.var() # 平均値法の分散
print(f"ヒット・アンド・ミス 1標本あたり分散 = {var_hit:.4f}")
print(f"平均値法 1標本あたり分散 = {var_avg:.4f}")
出力:
平均値法 pi = 3.14048
ヒット・アンド・ミス 1標本あたり分散 = 2.6977
平均値法 1標本あたり分散 = 0.7975
出力の意味:同じπを求めるのに、ヒット・アンド・ミスの1標本あたり分散は 2.70、平均値法は 0.80。約3.4倍の差です。つまり同じ精度を出すのに、ヒット・アンド・ミスは平均値法の3.4倍のサンプルが要る。理由は次節。
3. なぜヒット・アンド・ミスは非効率か
ヒット・アンド・ミスは関数値を「入った/外れた」の0/1に丸めています。点が四分円の奥深くにあっても境界ギリギリでも、同じ「1」。この情報の損失が分散を増やします。
平均値法は という連続な高さをそのまま使うので、各サンプルがより多くの情報を持ち、ばらつきが小さい。一般に「関数値を直接平均できるなら、当たり判定に丸めるべきではない」——これがモンテカルロ積分の基本姿勢です。ヒット・アンド・ミスが正当化されるのは、領域内かどうかしか判定できない(高さが測れない)場合に限られます。
数式の直観的意味
ベルヌーイ変数の分散は で、 が0や1に近いほど小さく、 で最大。πの場合 で分散 、これを4倍スケールの二乗(16倍)して 2.70。一方 は とともに 4 から 0 まで滑らかに動き、その分散は 0.80。「0/1への丸めは、中間の高さ情報を捨てる代わりに、より大きなジャンプ(0か4×何か)を生む」——このジャンプの大きさが分散に効きます。ヒット・アンド・ミスは平均値法の特殊ケース(被積分関数が指示関数)であり、指示関数は最も分散が大きい表現の一つ、と理解すると位置づけが明確になります。
⚠️ よくある誤解・落とし穴
- 「ヒット・アンド・ミスが基本形」ではない:直観的なので入門で使われますが、効率では平均値法に劣ります。πは平均値法で求める方が賢い。
- 「当たり判定の方が誤差が小さそう」ではない:逆です。情報を捨てるぶん分散が大きい(本ノートで3.4倍)。
- 「比率だから標準誤差は別物」ではない:比率の標準誤差 も の特殊形。 則は同じ。
- 「高次元の体積もこれで十分」ではない:高次元では当たり確率 が極端に小さくなり(球の体積比が次元で激減)、ほとんど外れて推定が不安定に。稀少事象には重点サンプリングが必要。
- 「丸めても期待値は正しい」点は本当:不偏性は保たれます(期待値はπ)。問題は分散=効率だけです。
対応シミュレーション参照
本文のπ推定(ヒット・アンド・ミス default_rng(23)/平均値法と分散比較 default_rng(24))。
関連ノート
- モンテカルロ積分の原理(前提・平均値法という上位互換)
- 収束率と誤差(√n則)(分散と誤差の関係)
- 制御変量法(分散をさらに下げる)
- シミュレーションとは(決定的 vs 確率的)(πの当たり判定の初出)
- 第3章 モンテカルロ積分 目次
- シミュレーション・モンテカルロ法 全体目次