// Generate a histogram of standard-normal-distributed numbers // with 7+2 bins from -2.0 to 2.0. The additional two bins are // the overflow bins. auto h = histogram(-2.0, 2.0, 0.5, [ 0.697108, 0.019264, -1.838430, 1.831528, -0.804880, -1.558828, -0.131643, -0.306090, -0.397831, 0.037725, 0.328819, -0.640064, 0.664097, 1.156503, -0.837012, -0.969499, -1.410276, 0.501637, 1.521720, 1.392988, -0.619393, -0.039576, 1.937708, -1.325983, -0.677214, 1.390584, 1.798133, -1.094093, 2.263360, -0.462949, 1.993554, 2.243889, 1.606391, 0.153866, 1.945514, 1.007849, -0.663765, -0.304843, 0.617464, 0.674804, 0.038555, 1.696985, 1.473917, -0.244211, -1.410381, 0.201184, -0.923119, -0.220677, 0.045521, -1.966340, ]); assert(h.totalCount == 50); assert(isClose(h.minValue, -1.96634, 0.01, 1e-5)); assert(isClose(h.maxValue, 2.26336, 0.01, 1e-5)); assert(isClose(h.sum, 10.3936, 0.01, 1e-5)); assert(isClose(h.mean, 0.2079, 0.01, 1e-5)); assert(isClose(h.percentile(0.5), 0.1429, 0.01, 1e-5)); enum inf = double.infinity; auto expectedHist = [ [-inf, 0.00], [-2.0, 0.12], [-1.5, 0.16], [-1.0, 0.32], [-0.5, 0.32], [ 0.0, 0.28], [ 0.5, 0.20], [ 1.0, 0.20], [ 1.5, 0.32], [ 2.0, 0.00], ]; foreach (idx, coord, double density; h) { assert(isClose(expectedHist[idx][0], coord, 0.01, 1e-5)); assert(isClose(expectedHist[idx][1], density, 0.01, 1e-5)); }
// Generate a histogram of geometric-distributed numbers. auto h = logHistogram(0U, 50U, 10U, [ 3U, 4U, 23U, 2U, 0U, 2U, 9U, 0U, 17U, 2U, 0U, 5U, 5U, 35U, 0U, 16U, 17U, 3U, 7U, 14U, 3U, 9U, 1U, 17U, 13U, 10U, 38U, 2U, 1U, 29U, 1U, 5U, 49U, 40U, 2U, 1U, 13U, 5U, 1U, 1U, 2U, 4U, 1U, 0U, 0U, 7U, 7U, 34U, 3U, 2U, ]); assert(h.totalCount == 50); assert(h.minValue == 0); assert(h.maxValue == 49); assert(h.sum == 465); assert(isClose(h.mean, 9.3, 0.01, 1e-5)); assert(isClose(h.percentile(0.5), 4.5, 0.01, 1e-5)); auto expectedHist = [ [ 0, 0.120], [ 1, 0.140], [ 2, 0.140], [ 3, 0.080], [ 4, 0.040], [ 5, 0.080], [ 6, 0.000], [ 7, 0.060], [ 8, 0.000], [ 9, 0.040], [10, 0.016], [20, 0.004], [30, 0.006], [40, 0.004], [50, 0.000], ]; foreach (idx, coord, double density; h) { assert(isClose(expectedHist[idx][0], coord, 0.01, 1e-5)); assert(isClose(expectedHist[idx][1], density, 0.01, 1e-5)); }
Histogram, dalicious.math.logIndex
Creates a histogram of values. Additional values can be inserted into the histogram using the insert method. The second form logHistogram creates a histogram with logarithmic bin sizes.