这种计算方差的算法是否正确?

时间:2011-11-02 23:55:37

标签: c++ math

我在v_samples(1.4,2.21,4.21,2.1,5.1)中有以下数字

我得到了deviance = 2.45122

但是当我检查了一些偏差计算器websites时。他们都给了我不同的答案。

double variance(){
        double variance =0 ;
        double average = mean();
        double size = v_samples.size();
        for (size_t i = 0, max = size; i != max; ++i){
            variance += (v_samples[i]-average) * (v_samples[i]-average) / size;
        }
        return variance;
    }

编辑:方差而不是偏差

编辑:mean()返回2.804

编辑:mean现在返回正确的值3.004

样本差异现在返回1.97362。这是正确的

3 个答案:

答案 0 :(得分:1)

它应该有效,因此您在mean()中遇到问题。

答案 1 :(得分:1)

您的在线资源中的混淆几乎肯定在“样本方差”和“偏差校正样本方差”之间。后者在分母中需要size-1而不是size

http://mathworld.wolfram.com/Variance.html

答案 2 :(得分:1)

总和

1.4, 2.21, 4.21, 2.1, 5.1

15.02 且平均值 3.004

如果你的意思是 2.804

 2.804 * 5 = 14.02

15.02 14.02 关闭1.您在某处出现了一个错误:)