一連の値の累積分布関数を計算しようとしています。
gsl を使用してヒストグラムを計算し、ここから CDF を計算しようとしましたが、値が 1 つずれているようです。
これは私が使用しているコードです:
gHist = gsl_histogram_alloc((maxRange - minRange) / 5);
gsl_histogram_set_ranges_uniform(gHist, minRange, maxRange);
for (int j = 0; j < ValidDataCount; j++)
gsl_histogram_increment (gHist, ValAdd[j]);
gsl_histogram_pdf * p = gsl_histogram_pdf_alloc(gsl_histogram_bins(gHist));
gsl_histogram_pdf_init (p, gHist);
for (int j = 0; j < gsl_histogram_bins(gHist) + 1 ; j++)
printf ("%f ", p->sum[j]);
ヒストグラムは次のようになります: 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 .... このように続きます。合計20個の値があります
そして累積分布関数は次のとおりです。
最初の位置に 0 があるのはなぜですか? 0.05から始めるべきではありませんか?
ありがとうございました。