You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于Metropolis-Hastings的MC期望计算与卡方分布采样结果差异问询

蒙特卡洛重要性采样+M-H算法计算期望的偏差问题解答

我来梳理下这个问题的前因后果和解决过程:

问题背景

  • 已知独立随机变量 $X \sim N(0,1)$、$Y \sim N(0,1)$,定义 $Z = g(X,Y) = X^2 + Y2$,它服从自由度为2的卡方分布($\chi2(2)$)
  • 目标是计算 $E[Z]$,由于当 $g$ 形式复杂时无法直接推导分布,所以采用无意识统计学家法则,结合蒙特卡洛(MC)重要性采样,用Metropolis-Hastings(M-H)算法实现采样
  • 最初遇到的异常:直接从 $\chi^2(2)$ 采样得到的均值约为2(符合卡方分布期望等于自由度的理论结论),但MC重要性采样计算出的均值约为4,二者刚好是2倍关系

偏差原因分析

出现2倍偏差的核心问题,几乎可以肯定是重要性采样的权重计算错误

  • 比如在转换采样分布时,遗漏了变量替换的Jacobian行列式系数;
  • 或者对目标分布与提议分布的概率密度比值计算有误,比如把二维正态的联合密度当成一维处理,或者忽略了 $\chi^2(2)$ 与指数分布的等价性($\chi^2(2)$ 等价于参数为1/2的指数分布,期望为2),导致权重整体被缩放了2倍,最终期望结果也随之放大。

修正后的结果验证

修正权重计算逻辑后,两种方法的结果完全对齐,同时M-H采样的效率表现更优:

  • 直接从 $\chi^2(2)$ 采样的均值:2.0159
  • MC+M-H重要性采样计算的均值:1.9694

这两个结果都非常接近理论期望2,完美验证了方法的正确性。

额外提示:未知目标分布时的常数验证

如果遇到未知 $g(X,Y)$ 分布的场景,想要确认重要性采样的结果是否正确,可以通过以下方式:

  • 先用小样本暴力蒙特卡洛(直接从原始的 $X,Y$ 分布采样,计算 $g(X,Y)$ 后取平均)作为基准值,对比重要性采样的结果;
  • 检查重要性权重的均值,如果权重均值偏离1过多,大概率是权重计算存在问题;
  • 尝试更换不同的提议分布,观察结果是否收敛到同一数值,以此验证结果的稳健性。

内容的提问来源于stack exchange,提问作者Mike

火山引擎 最新活动