まず、セットの分散を計算する必要があります。分散は、各数値の平均からの平均二乗偏差として計算されます。
double variance(double[] population) {
long n = 0;
double mean = 0;
double s = 0.0;
for (double x : population) {
n++;
double delta = x – mean;
mean += delta / n;
s += delta * (x – mean);
}
// if you want to calculate std deviation
return (s / n);
}
それができたら、値セットの広がりと比較したグラフの解像度に応じてxを選択し、それを次の式に代入してyを取得できます。
protected double stdDeviation, variance, mean;
public double getY(double x) {
return Math.pow(Math.exp(-(((x - mean) * (x - mean)) / ((2 * variance)))), 1 / (stdDeviation * Math.sqrt(2 * Math.PI)));
}
結果のセットを表示するには:レイアウトした母集団セットを取得し、x解像度が1000ピクセルのグラフにx=0からx=2000を表示することにしたとします。次に、ループ(int x = 0; x <= 2000; x = 2)をプラグインし、それらの値を上記の式にフィードして、ペアのy値を取得します。表示するyは0-1であるため、これらの値をyの解像度に適切な丸め動作を使用してマップし、グラフがギザギザになりすぎないようにします。したがって、y解像度を500ピクセルにする場合は、0から0、1から500、.5から250などを設定します。これは不自然な例であり、より多くの柔軟性が必要になる場合がありますが、ポイントを示していると思います。 。ほとんどのグラフ作成ライブラリは、これらの小さなことを処理します。