控制变量法模拟器 返回
统计·蒙特卡洛

控制变量法模拟器

这是一款免费工具,让你体验蒙特卡洛法中用于提升精度的「控制变量法」。想要求解的量与相关性强的补助变量一起使用,推定值的标准误差会下降多少?通过改变相关系数、样本数、随机数种子,可以实时确认方差按 ρ² 缩小的过程。

参数设置
与控制变量的相关系数 ρ
求解量 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)。这本质上是用 X 对 Y 进行线性回归时的斜率。散点图上那条橙色直线就是它。用这个最优的 c*,补正后的方差就恰好变成 (1−ρ²) 倍。ρ 是 X 和 Y 的相关系数。所以如果 ρ=0.85,那么 1−0.85²=0.2775,也就是方差降低约 72%。而且不需要增加样本数。
🙋
方差降低 ρ² 就是样本数没关系…把相关系数的滑块拖动时,右下的图就变成漂亮的抛物线了。
🎓
没错。方差降低率 ρ² 完全不依赖样本数 n。这是控制变量法最优雅的地方。增加 n 时,普通法和控制变量法的误差都按 1/√n 下降,但两者的比值始终保持在 √(1−ρ²)。所以「实际上相当于用了多少倍的样本」这个效率提升倍率 1/(1−ρ²),也不受 n 影响。当 ρ=0.99 时大约是 50 倍——相当于白白增加了 50 倍的样本精度。
🙋
这么好用的话,什么计算都能用上了。选择好的控制变量有什么诀窍吗?
🎓
两个条件。首先要与求解的量相关性强,其次期望值要在解析上已知。实务中常用的是「复杂模型的简化版」。比如金融里求期权价格,算术平均亚式期权没有解析解,但几何平均亚式期权有解析解(类似布朗-舒尔斯模型),两者相关性极强(ρ 经常超过 0.99),用几何平均期权做控制变量,标准误差能降到十分之一以下。物理模拟也一样,线性近似或粗网格的结果可以当控制变量。相关性弱的控制变量不会造成坏处,但效果就只有 ρ² 那么多。所以真正的技能是「如何找到既已知期望值又与目标强相关的量」。

常见问题

控制变量法是减少蒙特卡洛推定方差(波动)的手法之一。在观测想要求解的量 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−ρ²) 倍,所以用普通法需要 n 个样本的精度,用控制变量法只需 n·(1−ρ²) 个样本即可达到。反过来说,样本数相同时,方差在「实际使用了 1/(1−ρ²) 倍的样本」的等价意义上减小。当 ρ=0.85 时,1/(1−0.7225)=3.60 倍;ρ=0.99 时约为 50 倍。相关性越接近 1,效果越显著。
好的控制变量需要满足两个条件。第一,与想要推定的量 Y 相关性强(|ρ| 越大,方差降低率 ρ² 越大)。第二,其期望值 E[X] 在解析上是已知的。在实务中,常用复杂模型的简化版、线性近似、具有已知闭形式解的近似模型作为控制变量。例如在金融的期权价格计算中,将具有解析解的几何平均亚式期权用作没有解析解的算术平均亚式期权的控制变量是标准做法。相关性弱的控制变量不会带来危害,但效果仅为 ρ²。

实际应用

金融工程·衍生品评价:控制变量法最活跃的应用领域之一。算术平均亚式期权没有闭形式解,需要用蒙特卡洛求价格,但几何平均亚式期权有解析解(类似黑-舒尔斯)。两者相关性非常强(ρ 经常超过 0.99),用几何平均期权作控制变量时,价格推定的标准误差能降到 1/10 以下。障碍期权和篮子期权的评价中也是标准做法。

保险数学·风险计算:保险公司用蒙特卡洛评估赔付总额的分布和风险价值(VaR)时,常用简化近似模型(如正态近似或独立假设的模型)作为控制变量。近似模型的期望值可以解析计算,与原始模型相关性强,这样能大幅减少所需的情景模拟数。

CAE·概率模拟:结构分析或流体分析中考虑材料特性、载荷、尺寸的波动时,用蒙特卡洛有限元(概率设计)确定结果的置信区间。由于一次分析成本高,用低阶近似(线性响应曲面、粗网格、简化一自由度模型)作控制变量,能大幅减少高精度分析的次数。在需要多次分析的可靠性分析和稳健设计中特别有效。

机器学习·梯度估计:强化学习的策略梯度(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倍

实务注意事项