一次遍历常见统计量。整数的数值稳定性

4

我想使用一次遍历算法计算平均值标准差偏度峰度协方差。我发现最简单和最快的方法是由伯克利研究集团的Stuart McCrary发布的。例如,对于标准差,可以使用以下方法:

std = sqrt((sum(x^2)-N*mean(X)^2)/(N-1))

我读到这种方法不够好,因为它在数值上是不稳定的。不幸的是,我对数值稳定性没有深刻的理解,但我理解它是一些问题,由于浮点运算的有限精度而发生。

在我的情况下,我只会处理10^1-10^6范围内的整数。

在我的情况下,我可以使用这种方法而不必担心数值稳定性吗?


1
虽然教科书方法大多数时候可以产生准确的结果,但仍存在一定程度的不确定性,也许某些试验会将其推入教科书方法不准确的领域。研究本身并未详细说明其限制! - Bassem Akl
@BassemAkl 不需要进行研究,但在许多不同的地方都写道,上面的方程式是最快和最简单的,但会受到数值不稳定性的影响。 - zlon
1个回答

0
为了提高数值稳定性,您可以对数据进行归一化处理。 参见:Wikipedia: normalization 例如:您有一个数据集X_1, ..., X_n,其中平均值为x_bar,标准差为s。然后通过以下方式对数据进行归一化处理:(X_i - x_bar) / s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接