import { Sampling } from './sampling';
/**
 * A histogram.
 * <p>
 * A histogram summarizes the distribution of values v in an array.
 * The range (vmax - vmin) of values v in the array is partitioned uniformly
 * into some number of bins. Each bin then contains the number of values
 * that lie closest to the center of that bin.
 * <p>
 * If the values v in the array are assumed to be instances of some random
 * variable, then a probability density function may be estimated for that
 * variable by simply dividing the count in each bin by the total number of
 * values in that array. The resulting functions are called the densities.
 * <p>
 * The number of bins may be specified or computed automatically. In the
 * automatic case, we compute bin width as:
 * <pre><code>
 * w = 2.0 * (v75 - v25) / pow(n, 1.0/3.0),
 * </code></pre>
 * where n denotes the number of values, and v25 and v75 are the 25th and
 * 75th percentiles, respectively. The number of bins is then computed by
 * dividing the range (vmax - vmin) of values by that bin width, rounding
 * down to the nearest integer. In this way, the number of bins grows
 * as the cube root of the number of values n.
 * <p>
 * Minimum and maximum values (vmin and vmax) may also be specified or
 * computed automatically. If specified, then only the values in the range
 * [vmin, vmax] are binned, and values outside this range are ignored.
 * <p>
 * Reference: Izenman, A. J., 1991, Recent developments in nonparametric
 * density estimation: Journal of the American Statistical Association,
 * v. 86, p. 205-224.
 */
export declare class Histogram {
    private _vmin;
    private _vmax;
    private _computedMinMax;
    private _sbin;
    private _h;
    private _nin;
    private _nlo;
    private _nhi;
    /**
     * Constructs a new histogram.
     * <p>
     * The min and max bin values are computed automatically, unless the user
     * provides a min and max value.
     * @param v    an array of numbers.
     * @param nbin the number of bins.
     * @param vmin the minimum value (optional).
     * @param vmax the maximum value (optional).
     */
    constructor(v: number[], nbin: number, vmin?: number, vmax?: number);
    /**
     * Gets the min value.
     */
    get min(): number;
    /**
     * Gets the max value.
     */
    get max(): number;
    /**
     * Gets the bin count.
     */
    get binCount(): number;
    /**
     * Gets the bin delta.
     */
    get binDelta(): number;
    /**
     * Gets the first bin value.
     */
    get binFirst(): number;
    /**
     * Gets the bin sampling.
     */
    get binSampling(): Sampling;
    /**
     * Gets the counts.
     */
    get counts(): number[];
    /**
     * Gets the count of values in the range.
     */
    get inCount(): number;
    /**
     * Gets the count of values too low.
     */
    get lowCount(): number;
    /**
     * Gets the count of values too high.
     */
    get highCount(): number;
    /**
     * Gets the densities.
     */
    get densities(): number[];
    /**
     * Initializes the histogram. If nbin is zero, then this method computes
     * the number of bins.
     */
    private init;
    private initMinMax;
    private trim;
}
