如何减少样本平均值的误差?

计算科学 统计数据 matlab
2021-12-17 00:28:37

我想使用样本平均值(X1+....Xn)/n作为期望E(X)的替代品。正如大数的弱定律所声称的那样,随着 n 的增加,样本平均值应该收敛到E(X)

我希望在我的项目中使用这个逻辑,其中Xi是 iid 指数随机变量。然而,一个简单的代码并不能很好地证明这一点。这是因为当我们将n数字X1,...,Xn相加时,通常会导致数字很大,并且会丢失大部分精度。因此,当我除以n时,差值|(X_1 + ... X_n)/n - \mathbb{E}(​​X)| 即使我大量增加n|(X1+...Xn)/nE(X)|也永远不会很小n

我尝试了一些简单的操作,例如取小数,然后取总平均值。即使在这里,我似乎也遇到了同样的问题。

有没有一种巧妙的方法可以实现小于108的错误。

4个回答

Knuth(TAOCP 第 2 卷,第 3 版,第 232 页)建议使用公式来计算平均值,其中是你的样品。Mk=Mk1+(xkMk1)/kx

另请参阅:stackoverflow 问题关于准确计算运行方差的文章以及关于计算协方差和任意阶统计矩的论文

由于您正在总结指数,您可能需要查看提供给这个 SC 问题的答案。

如果你用精确的算术计算,就没有办法重写你的公式来获得更好的准确性;你不能做得比更好。O(σ/N)

但是,如果仅仅因为舍入误差而获得低精度,则可以使用公式,使用 for的任意近似值,例如,前几项的均值。E(X)=x+N1(Xkx)xE(X)

您可以通过将排序中的总和的条目按绝对值(从最小值开始)求和来进一步减少舍入误差。

我认为您可以通过将其计算为 ((X_1-E(X))+...+(X_n-E(X)))/n 来解决精度问题。