2

我已经导出并实现了一个期望值的方程。为了证明我的代码没有错误,我多次使用蒙特卡罗计算来证明它收敛到与我推导出的方程相同的值。

由于我现在有数据,我该如何可视化呢?这甚至是正确的测试吗?我可以衡量一下我对结果正确的把握程度吗?

4

2 回答 2

2

目前尚不清楚可视化数据的含义,但这里有一些想法。

如果您的蒙特卡洛模拟是正确的,那么您的数量的蒙特卡洛估计量就是样本的平均值。您的估计器的方差(平均值与“正确”值的距离)将与您采集的样本数量成反比:只要您采集足够多的样本,您就会任意接近正确答案. 因此,使用中等(如果是单变量,1000 应该足够)样本数量,并查看平均值。如果这与您的理论预期不符,那么您的某个估计中的某个地方就有错误。

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

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

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

如果 M(x) 是 E[X] 的蒙特卡洛估计量,则作为 n -> inf,abs(M(x) - E[X]) -> 0。M(x) 的方差与n,但它究竟是什么将取决于 M 是 的估计。您可以根据样本的均值和方差为此构建一个特定的测试,以查看您所做的事情是否有意义。每 100 次迭代,您可以计算样本的平均值,并取其与理论 E[X] 之间的差异。如果这减少,您可能没有错误。如果没有,您的理论估计或蒙特卡洛估计量都有问题。

于 2013-02-04T11:08:14.743 回答
1

为什么不做一个简单的 t 检验?从你的理论方程,你有真正的平均值mu_0,你的模拟器意味着,mu_1。请注意,我们无法计算mu_1,我们只能使用平均值/平均值来估计它。所以我们的假设是:

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

检验统计量是通常的单样本检验统计量,即

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

在哪里

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

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

一些评论:

  1. 你不能“证明”手段是平等的。
  2. 您提到要测试许多值。一种可能的解决方案是实现Bonferroni 类型校正。基本上,您将 p 值减少到:您正在运行的测试数量p-value/N在哪里。N
  3. 使您的样本量尽可能大。由于我们对您的蒙特卡洛模拟中的可变性一无所知,因此不可能说使用n=....
  4. 当大于/小于 (-3, 3) 时 p 值 < 0.01 的值T仅来自正态分布。
于 2013-02-05T08:45:08.517 回答