Wal*_*ite 1 math variance standard-deviation
我有一个并行应用程序,其中我根据计算的平均值在每个节点中计算数据点每个分区的方差,但如何计算全局方差(所有方差的总和)?
我认为这将是方差的简单总和除以节点数,但它并没有给我一个接近的结果......
全局变化是一个总和。
您可以简单地并行计算总和的各个部分,然后将它们加在一起。
sum(x1...x100) = sum(x1...x50) + sum(x51...x100)
Run Code Online (Sandbox Code Playgroud)
同样,您可以计算全局平均值 - 计算全局总和,计算对象计数的总和,除以(不要除以节点数;而是除以对象总数)。
mean = sum/count
Run Code Online (Sandbox Code Playgroud)
获得平均值后,您可以使用上面的分布和公式(应用于 (xi-mean)^2)计算偏差平方和,然后除以 count-1 以获得方差。
虽然“平方均值减去均值平方”这个公式非常流行,但当您使用浮点数学时,它在数值上不稳定。这被称为灾难性取消。由于两个值可能非常接近,因此在计算差异时会丢失很多精度数字。我见过人们以这种方式得到负方差......
有了“大数据”,数值问题变得更糟......
避免这些问题的两种方法: