web-dev-qa-db-ja.com

C ++またはJavaで分散、中央値、標準偏差をどのように計算しますか?

可能性のある複製:
単純な統計-Java平均、標準偏差などを計算するためのパッケージ

いくつかのdouble(1.1、2、3、5)のベクトルがあります。分散、中央値、標準偏差を計算するにはどうすればよいですか?

Java、C++、または擬似コードでも可能です。

15
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];
    }
}
114
Dennis

平均を計算するには、数値のリスト/配列をループし、部分的な合計と長さを追跡します。その後、sum/length

double sum = 0.0;
int length = 0;

for( double number : numbers ) {
    sum += number;
    length++;
}

return sum/length;

分散も同様に計算されます。標準偏差は、単に分散の平方根です。

double stddev = Math.sqrt( variance );
0
tskuzzy