我如何证明我的导出方程和蒙特卡罗模拟是等价的?

时间:2013-02-04 09:11:06

标签: statistics montecarlo correctness

我已经推导并实现了期望值的等式。 为了证明我的代码没有错误,我已经使用了Monte-Carlo 计算多次以表明它收敛于同一个 值作为我推导出的等式。

由于我现在有数据,我怎么能想象这个? 这甚至是正确的测试吗? 我可以给出一个衡量结果是否正确的方法吗?

2 个答案:

答案 0 :(得分:2)

通过可视化数据并不清楚你的意思,但这里有一些想法。

如果您的蒙特卡罗模拟是正确的,那么您的数量的蒙特卡罗估算器就是样本的平均值。估算器的方差(与平均值的“正确”值相差多远)将与您采取的样本数成反比:只要您采取足够的,您就会随意接近正确的答案。因此,使用一个温和的(如果它是单变量的1000就足够了)样本数量,并查看平均值。如果这与您的理论预期不符,那么您在某个估算值中会出现错误。

您也可以使用样本的直方图,如果它们是一维的话。直方图中样本的分布应与您期望的理论分布相匹配。

如果您以与预期相同的方式知道方差,您还可以查看样本方差(样本与期望之间的均方差),并检查其是否匹配。

编辑:在答案中加入更“正式”的东西!

如果M(x)是E [X]的蒙特卡罗估计,那么n - > inf,abs(M(x)-E [X]) - > 0.M(x)的方差与n成反比,但究竟是什么取决于M是的估计量。您可以根据样本的均值和方差为此构建一个特定的测试,以确定您所做的事情是有意义的。每100次迭代,您可以计算样本的平均值,并将其与理论E [X]之间的差值进行计算。如果这个减少,你可能没有错误。如果没有,您在理论估计或蒙特卡罗估算中都会遇到问题。

答案 1 :(得分:1)

为什么不做一个simple t-test?根据你的理论方程,你得到真正的均值mu_0,你的模拟器就是mu_1。请注意,我们无法计算mu_1,我们只能使用均值/平均值来估算它。所以我们的假设是:

H_0: mu_0 = mu_1  and H_1: mu_0 does not equal mu_1

测试统计数据是通常的one-sample test统计数据,即

T = (mu_0 - x)/(s/sqrt(n))

其中

  • mu_0是等式中的值
  • x是模拟器的平均值
  • s是标准偏差
  • n是用于计算平均值的值的数量。

在你的情况下,n会很大,所以这相当于普通测试。当H_0大于/小于(-3,3)时,我们会拒绝T。这相当于p值<1。 0.01。

几条评论:

  1. 你不能“证明”手段是平等的。
  2. 您提到要测试多个值。一种可能的解决方案是实现Bonferroni type correction。基本上,您将p值降低到:p-value/N,其中N是您正在运行的测试数。
  3. 使您的样本量尽可能大。由于我们对您的蒙特卡罗模拟中的可变性一无所知,因此无法使用n=....
  4. p值&lt; 0.01 T大于/小于(-3,3)时,只是来自正态分布。