如何在C++或Java中计算方差、中值和标准差



可能重复:
简单统计-用于计算平均值、标准差等的Java包

我有一个双(1.1,2,3,5(的向量。我如何计算方差、中值和标准差?

Java或C++,甚至伪代码都可以。

public class Statistics {
    double[] data;
    int size;   
    public Statistics(double[] data) {
        this.data = data;
        size = data.length;
    }   
    double getMean() {
        double sum = 0.0;
        for(double a : data)
            sum += a;
        return sum/size;
    }
    double getVariance() {
        double mean = getMean();
        double temp = 0;
        for(double a :data)
            temp += (a-mean)*(a-mean);
        return temp/(size-1);
    }
    double getStdDev() {
        return Math.sqrt(getVariance());
    }
    public double median() {
       Arrays.sort(data);
       if (data.length % 2 == 0)
          return (data[(data.length / 2) - 1] + data[data.length / 2]) / 2.0;
       return data[data.length / 2];
    }
}

要计算平均值,请遍历数字列表/数组,跟踪部分和和和长度。然后返回sum/length

double sum = 0.0;
int length = 0;
for( double number : numbers ) {
    sum += number;
    length++;
}
return sum/length;

方差的计算方法类似。标准差只是方差的平方根:

double stddev = Math.sqrt( variance );

最新更新