我有一个并行应用程序,我在每个节点中根据计算的平均值计算数据点的每个分区的方差,但是如何计算全局方差(所有方差的总和)?
我认为它是方差的简单总和除以节点数,但它没有给我一个接近的结果......
答案 0 :(得分:4)
全局变体是总和。
您可以平行地并行计算和的部分,然后将它们加在一起。
sum(x1...x100) = sum(x1...x50) + sum(x51...x100)
同样,你可以计算全局平均值 - 计算全局和,计算对象计数的总和,除(不除以节点数;但除以对象总数)。
mean = sum/count
一旦得到均值,就可以使用上面的分布式和公式计算偏差平方和(应用于(xi-mean)^ 2),然后除以count-1得到方差。
虽然这个公式“平均值减去平方均值”非常受欢迎,但是当你使用浮点数学时,它在数值上是不稳定的。它被称为catastrophic cancellation。 因为这两个值可能非常接近,所以在计算差异时会丢失很多精度数字。我看到人们以这种方式得到负面差异......
对于“大数据”,数值问题变得更糟......
避免这些问题的两种方法:
答案 1 :(得分:4)
您需要添加每个分区的总和和平方和以获得全局和和平方和,然后使用它们来计算全局均值和方差。
更新:E [X 2 ] - E [X] 2 并取消......
计算用
计算标准差时取消误差的重要性σ=√(E [X 2 ] - E [X] 2 )
让我们假设我们有E [X 2 ]和E [X] 2 精确到12个有效小数。这意味着σ 2 具有阶数10 -12 ×E [X 2 ]的误差,或者,如果有显着的抵消,则等效地当σ的误差大约为10 -6 ×E [X]时,10 -12 ×E [X] 2 ;一个百万分之的意思
对于许多(如果不是大多数)统计分析,这是可忽略的,因为它属于其他误差源(如测量误差),因此您可以很好地将负差异设置为零在取平方根之前。
如果你真的关心这种程度的偏差(并且可以证明它是你正在测量的东西的一个特征,而不是,例如,测量方法的神器),那么你可以开始担心取消。也就是说,最可能的解释是您使用了不适当的数据量表,例如以开尔文而不是Celcius测量每日温度!