我正在尝试计算一组值的累积分布函数。
我使用 gsl 计算了直方图,并尝试从这里计算 CDF,但似乎这些值移动了一个位置。
这是我正在使用的代码:
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 0 0 0 1 0 0 ....这样下去。共有 20 个值
cdf为:0.00 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.1 0.1 ...
为什么第一个位置有0?它不应该从 0.05 开始吗?
谢谢你。