UNPKG

@basementuniverse/stats

Version:
127 lines (126 loc) 3.58 kB
/** * Safe version of `Math.min` * * Native `Math.min` throws: * ``` * `Uncaught RangeError: Maximum call stack size exceeded` * ``` * when passing in a huge number of arguments (>~100k). * @param {number[]} a An array of numbers * @returns {number} The minimum number from the array */ export declare function minArray(a: number[]): number; /** * Safe version of `Math.max` * * Native `Math.max` throws: * ``` * `Uncaught RangeError: Maximum call stack size exceeded` * ``` * when passing in a huge number of arguments (>~100k). * @param {number[]} a An array of numbers * @returns {number} The maximum number from the array */ export declare function maxArray(a: number[]): number; /** * Find the mean of a list of numbers * @param {number[]} data An array of numbers * @returns {number} The mean of a list of numbers */ export declare function mean(data: number[]): number; /** * Find the median of a list of numbers * @param {number[]} data An array of numbers * @returns {number} The median of a list of numbers */ export declare function median(data: number[]): number; /** * Find the mode of a list of numbers * @param {number[]} data An array of numbers * @returns {number} The mode of a list of numbers */ export declare function mode(data: number[]): number; /** * Find the range of a list of numbers * @param {number[]} data An array of numbers * @returns {object} An object containing the min, max and range * @example Returned format: * ``` * { * min: 1, * max: 5, * range: 4 * } * ``` */ export declare function range(data: number[]): { min: number; max: number; range: number; }; /** * Calculate the variance of a list of numbers * @param {number[]} data An array of numbers * @param {boolean} sample True if the dataset is a sample * @returns {number} The variance of a list of numbers */ export declare function variance(data: number[], sample?: boolean): number; /** * Calculate the standard deviation of a list of numbers * @param {number[]} data An array of numbers * @param {boolean} sample True if the dataset is a sample * @returns {number} The standard deviation of a list of numbers */ export declare function standardDeviation(data: number[], sample?: boolean): number; /** * Calculate the (exclusive) interquartile range of a list of numbers * @param {number[]} data An array of numbers * @returns {object} An object containing the Q1, Q2 and Q3 medians and interquartile range * @example Returned format: * ``` * { * q1: 1, * q2: 3, * q3: 5, * range: 4 * } * ``` */ export declare function iqr(data: number[]): { q1?: number; q2?: number; q3?: number; range: number; }; /** * Find outliers in a list of numbers using the IQR method * @param {number[]} data An array of numbers * @returns {number[]} An array of indexes for the outliers */ export declare function outliers(data: number[]): number[]; export declare type Bucket = { min: number; max: number; frequency: number; }; /** * Generate a histogram by splitting data into buckets of the specified size * and counting the frequency of items in each bucket * * Within each bucket, min is inclusive and max is exclusive * * @param {number[]} data An array of numbers * @param {number} bucketWidth The width of each bucket * @returns {Bucket[]} An array of buckets * @example Returned format: * ``` * [ * { * min: 1, * max: 3, * frequency: 4 * } * ] * ``` */ export declare function histogram(data: number[], bucketWidth?: number): Bucket[];