【发布时间】:2013-06-28 12:35:33
【问题描述】:
我正在尝试计算一组值的累积分布函数。
我使用 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开始吗?
谢谢。
【问题讨论】:
-
答案来晚了:希望它仍然有用。