我有一组数字列表,例如:[0] (0.01, 0.01, 0.02, 0.04, 0.03)[1] (0.00, 0.02, 0.02, 0.03, 0.02)[2] (0.01, 0.02, 0.02, 0.03, 0.02) ...[n] (0.01, 0.00, 0.01, 0.05, 0.03)我想做的是有效地计算所有数组元素在列表的每个索引处的均值和标准差。为了表示平均值,我一直在遍历数组并求和列表中给定索引的值。最后,我将“平均值列表”中的每个值除以n(我正在处理总体,而不是总体中的样本)。为了进行标准偏差,现在我已经计算出平均值,因此我再次遍历。我想避免两次遍历数组,一次是平均值,然后一次是SD(在得到平均值之后)。是否有一种有效的方法来计算两个值,而只需要遍历数组一次?任何使用解释语言(例如Perl或Python)或伪代码的代码都可以。
3 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
基本的答案是随行累加x(称为“ sum_x1”)和x 2(称为“ sum_x2”)之和。那么标准差的值是:
stdev = sqrt((sum_x2 / n) - (mean * mean))
哪里
mean = sum_x / n
这是样本标准差;您将使用“ n”而不是“ n-1”作为除数来获得总体标准差。
如果要处理大样本,则可能需要担心取两个大数之差的数值稳定性。
添加回答
举报
0/150
提交
取消