編集: Apache Commons Math ライブラリには統計セクションがあるようです。具体的には、共通のディストリビューションのパッケージ全体です。私は基本的な統計を思い出せないので、そこに数学者がいるといいのですが...ここに彼らのライブラリを使用する私の試みがあります。ここにスライディング ウィンドウがあり、それらの値の間の P を計算します。これからPDFを取得する本当の方法は何ですか? CDF関数しかありません。
public void testNormalDist() throws MathException {
DistributionFactory f = DistributionFactory.newInstance();
NormalDistribution n = f.createNormalDistribution(0.0d, 1.0d);
double lastx = Double.NEGATIVE_INFINITY;
double nextx = Double.NEGATIVE_INFINITY;
for (int i=-100; i < 100; i++) {
nextx = i / 100d;
System.out.println(n.cumulativeProbability(lastx, nextx));
lastx = nextx;
}
}
グラフの確率密度関数が必要だと思います。ここに数学マークアップを含める方法がわからないため、方程式は wikipediaにあります。Y 値として p(x) を使用し、X 値として X を使用するだけで、そこから非常に簡単な 2 次元グラフを取得できます。
Java の下で Mathtoolsを見たことがありますか?
わかりました、これはどうですか... Xポイントの配列を指定します(もちろん、正規化されています。各ピクセル位置を画像の幅で割ることにより、Xピクセルをこれらに変換できます)、高さを返します分布曲線 (ここでも、正規化係数を掛けます)。これは、平均が 0 で標準偏差が 1 の基本的なケースです。
public double[] normalDistBasic(double[] xarray, double mu) {
double[] yarray = new double[xarray.length];
double rad2pi = 2.50662827d;
for (int off = 0; off < yarray.length; off++) {
double x = xarray[off];
double ss = -1d * x * x / 2d;
yarray[off] = (-1f / rad2pi) * Math.exp(ss);
}
return yarray;
}
ネット上で見つからない場合、任意の平均と標準偏差を取るものを実装するのは非常に簡単なはずです。