制御変量法シミュレーター 戻る
統計・モンテカルロ

制御変量法シミュレーター

モンテカルロ法の精度をタダで底上げする「制御変量法」を体験するツールです。求めたい量と相関の強い補助変数を使うと、推定値の標準誤差がどれだけ下がるか。相関係数・サンプル数・乱数シードを変えながら、分散が ρ² だけ縮む様子をリアルタイムに確かめられます。

パラメータ設定
制御変量との相関 ρ
求めたい量 Y と制御変量 X の相関係数。|ρ| が大きいほど効く
サンプル数 n
モンテカルロで生成する乱数対の数
乱数シード
疑似乱数の種。同じ値なら結果は完全に再現する
計算結果
通常MC推定値
制御変量推定値
通常MC標準誤差
制御変量標準誤差
分散低減率 (%)
効率向上倍率
サンプル対 (X, Y) の散布図と回帰直線

点群は相関 ρ に沿って斜めに伸びます。橙色の直線が回帰直線(傾き c)。右側のバーは通常MC(左)と制御変量法(右)の推定量のばらつきを比べたものです。

標準誤差 vs サンプル数
分散低減率 vs 相関 ρ
理論・主要公式

$$\hat\theta_{cv}=\bar Y-c\,(\bar X-\mathbb{E}[X]),\qquad c^{*}=\frac{\operatorname{Cov}(X,Y)}{\operatorname{Var}(X)}$$

制御変量推定量 θ_cv と最適係数 c*。Ȳ・X̄ は標本平均、E[X] は既知の制御変量の期待値。

$$\operatorname{Var}(\hat\theta_{cv})=\operatorname{Var}(\hat\theta)\,(1-\rho^2)$$

最適 c* を使うとき、制御変量推定量の分散は通常推定の (1−ρ²) 倍になる。ρ は X と Y の相関係数。

分散低減率はサンプル数 n に関係なく ρ² で決まり、効率向上倍率は 1/(1−ρ²)。標準誤差は √(1−ρ²) 倍に縮む。

制御変量法とは

🙋
モンテカルロ法って乱数をたくさん使って平均を出すやつですよね。でも「制御変量法」って聞き慣れません。何が違うんですか?
🎓
ざっくり言うと「タダで精度を上げる裏ワザ」だよ。普通のモンテカルロは、求めたい量 Y のサンプルをたくさん取って平均する。でもサンプルがばらつくから誤差が残るよね。制御変量法は、Y と一緒に「答えが分かっている別の量 X」も観測しておく。その X が真の値からどれだけ外れたかを見れば、Y のばらつきの一部を予測して差し引けるんだ。
🙋
答えが分かっている量を観測する意味がよく分かりません。分かっているなら計算しなくてもよくないですか?
🎓
そこがポイント。X 自体の答えは要らないんだ。欲しいのは「今回引いた乱数で X がたまたま高め/低めに出た」という情報。X と Y が相関していれば、X が高めに出た回は Y も高めに出ている。だから θ_cv = Ȳ − c(X̄ − E[X]) として、X の誤差ぶんを c 倍して引くと、Y の誤差も一緒に消える。左の散布図で点群が斜めに並ぶのが、その相関だよ。
🙋
なるほど!その c はどう決めるんですか?適当でいいんですか?
🎓
分散を一番小さくする最適値があって、c* = Cov(X,Y)/Var(X) なんだ。これは要するに Y を X で回帰したときの傾き。散布図に引いた橙色の直線がそれだよ。この最適 c* を使うと、補正後の分散はちょうど (1−ρ²) 倍になる。ρ は X と Y の相関係数。だから ρ=0.85 なら 1−0.85²=0.2775、つまり分散が約72%も減る。サンプルを増やさずに、だ。
🙋
分散が ρ² だけ減る…サンプル数は関係ないんですか?相関スライダーを動かすと右下のグラフがきれいな放物線になりますね。
🎓
そう、分散低減率 ρ² はサンプル数 n に一切依存しない。これが制御変量法の美しいところだ。n を増やすと通常法も制御変量法も誤差は 1/√n で下がるけど、両者の比はずっと √(1−ρ²) のまま。だから「実効的に何倍のサンプルを使ったのと同じか」を表す効率向上倍率 1/(1−ρ²) も n によらない。ρ=0.99 だと約50倍——50倍多く回したのと同じ精度がタダで手に入るんだ。
🙋
そんなに効くなら、どんな計算でも使えそうですね。良い制御変量を見つけるコツはありますか?
🎓
条件は2つ。求めたい量と相関が強いことと、その期待値が解析的に分かっていること。実務でよく使うのは「複雑なモデルの簡略版」だね。例えば金融のオプション価格では、解析解のある幾何平均アジアオプションを、解析解のない算術平均アジアオプションの制御変量にする。物理シミュレーションなら、線形近似や粗いメッシュの結果を制御変量に使う。相関が弱くても害はないけど、効果はρ²ぶんだけ。だから「いかに相関の強い既知量を探すか」が腕の見せどころなんだ。

よくある質問

制御変量法は、モンテカルロ推定の分散(ばらつき)を減らす手法のひとつです。求めたい量 Y のサンプルと同時に、Y と強く相関し、しかも期待値 E[X] が既知である別の量 X(制御変量)を観測します。推定したい平均から「X が真値からどれだけずれたか」を差し引くことで、Y のばらつきの一部を打ち消します。補正後の推定量 θ_cv = Ȳ − c(X̄ − E[X]) は、最適係数 c = Cov(X,Y)/Var(X) を使うとき分散が (1−ρ²) 倍になります。
制御変量推定量 θ_cv = Ȳ − c(X̄ − E[X]) の分散を最小化する係数は c* = Cov(X,Y)/Var(X) です。この最適 c* を代入すると、Var(θ_cv) = Var(θ)·(1 − ρ²) になります。ここで ρ は X と Y の相関係数です。つまり分散は ρ² の割合だけ減り、これがそのまま「分散低減率」になります。例えば ρ=0.85 なら ρ²=0.7225 で、分散は 72.3% 減り、残るのは 27.75% です。サンプル数 n に依存せず、相関の強さだけで決まるのが重要な点です。
効率向上倍率は「同じ精度を得るのに必要なサンプル数が何分の1で済むか」を表します。制御変量推定量の分散は通常推定の (1−ρ²) 倍なので、通常法で n サンプル必要だった精度を、制御変量法なら n·(1−ρ²) サンプルで達成できます。逆に言えば、同じサンプル数なら分散が 1/(1−ρ²) 倍だけ「実効的に多くのサンプルを使ったのと同等」になります。ρ=0.85 では 1/(1−0.7225)=3.60 倍、ρ=0.99 では約50倍と、相関が1に近づくほど劇的に効きます。
良い制御変量の条件は2つです。第一に、推定したい量 Y と相関が強いこと(|ρ| が大きいほど分散低減率 ρ² が大きい)。第二に、その期待値 E[X] が解析的に分かっていること。実務では、複雑なモデルの簡略版や、線形近似、既知の閉形式解を持つ近似モデルなどを制御変量に使います。例えば金融のオプション価格計算では、解析解を持つ幾何平均アジアオプションを、解析解のない算術平均アジアオプションの制御変量に使うのが定番です。相関が弱い制御変量を使っても害はありませんが、効果はわずかです。

実世界での応用

金融工学・デリバティブ評価:制御変量法が最も活躍する分野の一つです。算術平均アジアオプションには閉形式解がなくモンテカルロで価格を求めますが、幾何平均アジアオプションには解析解(ブラック・ショールズ型)が存在します。両者の相関は非常に強い(ρ が 0.99 を超えることも多い)ため、幾何平均オプションを制御変量にすると、価格推定の標準誤差が10分の1以下に縮みます。バリアオプションやバスケットオプションの評価でも同様の手法が標準的に使われます。

保険数理・リスク計算:保険会社が支払総額の分布や VaR(バリュー・アット・リスク)をモンテカルロで評価する際、簡略化した近似モデル(例えば正規近似や独立性を仮定したモデル)を制御変量に使います。近似モデルは解析的に期待値が計算でき、本来のモデルと強く相関するため、必要なシナリオ数を大幅に削減できます。

CAE・確率的シミュレーション:構造解析や流体解析で材料物性・荷重・寸法のばらつきを考慮する確率論的設計(モンテカルロFEM)では、1回の解析が高コストです。低次の近似モデル(線形応答曲面、粗いメッシュ、簡略化した1自由度モデル)を制御変量にすると、同じ信頼区間幅を得るのに必要な高精度解析の回数を数倍減らせます。多数回の解析が必要な信頼性解析・ロバスト設計で特に効果的です。

機械学習・勾配推定:強化学習の方策勾配(REINFORCE)やベイズ深層学習では、勾配を確率的に推定します。この推定は分散が非常に大きく学習が不安定になりがちです。そこで「ベースライン」と呼ばれる制御変量を導入し、報酬から状態価値の推定値を差し引くことで勾配推定の分散を下げます。これは制御変量法と数学的に同じ枠組みであり、安定した学習の鍵になっています。

よくある誤解と注意点

まず最大の誤解が、「制御変量法は推定値そのものを変える=バイアスを生む」というものです。実際には逆で、制御変量推定量 θ_cv は通常推定量 θ と同じ真の期待値を持つ不偏推定量です。E[X] が既知である限り、X̄ − E[X] の期待値はゼロなので、どんな係数 c を掛けて引いてもバイアスは入りません。このシミュレーターでも、通常MC推定値と制御変量推定値はどちらも真値(0)を狙っており、変わるのは「ばらつきの幅」だけです。減るのは誤差であって、的の中心はずれません。

次に、「最適係数 c* はサンプルから推定するからバイアスが出る」という点。理論上の c* = Cov(X,Y)/Var(X) は母集団の値ですが、実務では同じサンプルから c を推定します。これは厳密には微小なバイアスを生みますが、サンプル数が増えれば無視できる大きさになり、実用上はほぼ問題ありません。気になる場合は、c の推定に使うサンプルと推定に使うサンプルを分ける(パイロットラン方式)ことでバイアスを完全に消せます。なお負の相関でも c は負になるだけで、分散低減率は ρ² なので符号によらず同じだけ効きます。

最後に、「相関が弱い制御変量を使うと逆効果になる」という誤解。最適 c* を使う限り、分散は必ず (1−ρ²) 倍以下、つまり ρ がゼロでも分散は増えません(ρ=0 なら効果ゼロで現状維持)。害が出るのは、c を最適値から大きく外して固定したときだけです。一方で「制御変量を計算する追加コスト」は別問題で、X の評価が Y と同じくらい重ければ、分散低減率 ρ² が大きくても実効的な高速化は目減りします。ρ² だけでなく「X の計算コスト」も含めて、本当に得かを判断してください。

使い方ガイド

  1. 相関係数ρを-0.99~0.99の範囲で設定します。補助変数との相関の強さを制御し、制御変量法の効果を測定します
  2. サンプル数nを100~10000の間で指定し、モンテカルロシミュレーション回数を決定します
  3. シード값を入力してランダム数列を固定し、再現性のあるシミュレーション結果を得ます
  4. 「実行」ボタンを押すと、通常MC推定値と制御変量推定値が同時に計算され、標準誤差と分散低減率がリアルタイム表示されます

具体的な計算例

アジア型オプション評価でスポット価格S=100ドル、満期T=1年、ボラティリティσ=0.2、無リスク金利r=0.05の場合、n=5000サンプルで相関係数ρ=0.8を設定します。通常のMC法で標準誤差SE=0.847ドル、制御変量法適用後SE=0.328ドルに低減され、分散低減率61.3%、効率向上倍率2.58倍を達成します

実務での注意点