import type { Add, Sub, Mul, Div, Pow, Abs, Eq } from "./types"; export type ArithmeticObject = Add<[T] | [number], T> & Sub<[T] | [number], T> & Mul<[T] | [number], T> & Div<[T] | [number], T> & Pow<[T] | [number], T> & Eq<[T] | [number]> & Abs; export type Arithmetic = number | ArithmeticObject; export type FiveNumberSummary = { q0: T; q1: T; q2: T; q3: T; q4: T; }; export declare const QUARTILES: number[]; export type InterpolationMethod = "midpoint" | "nearest" | "hrank" | "lrank" | "weighted" | "outer"; export type SummaryOptions = { method?: InterpolationMethod; }; export type PercentileOptions = SummaryOptions & { p: number[]; }; export declare class Statistics { #private; constructor(..._: never); /** * Find the minimum value of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static min>(data: T[]): T | undefined; /** * Find the maximum value of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static max>(data: T[]): T | undefined; /** * Calculate the Mean of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static mean>(data: T[]): T | undefined; /** * Calculate the Median of a data set, using the mean of the two * central values if the data set has an even number of elements. * * @param data An array of number or object number types * @returns A number or object number type */ static median>(data: T[]): T | undefined; /** * Calculate the Mode of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static mode>(data: T[]): (string | number)[] | undefined; /** * Calculate the Variance of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static variance>(data: T[]): T | undefined; /** * Calculate the Standard Deviation of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static sd>(data: T[]): T | undefined; /** * Calculate the Standard Error of the Mean of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static sem>(data: T[]): T | undefined; /** * Calculate the Absolute Range of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static range>(data: T[]): T | undefined; /** * Calculate the Inter-Quartile Range of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static iqr>(data: T[], options?: SummaryOptions): T | undefined; /** * Calculate the Median Absolute Deviation of a data set. * * @param data An array of number or object number types * @returns A number or object number type */ static mad>(data: T[]): T | undefined; /** * * @param data An array of number or object number types * @param percentiles * @returns */ static percentiles>(data: T[], options?: PercentileOptions | number[]): T[] | undefined; /** * Calculate the Five-number Summary of a data set, using * * @param data An array of number or object number types * @returns A summary consisting of min (q0), first quartile (q1), * median (q2), third quartile (q3) and max (q4). */ static summary>(data: T[], options?: SummaryOptions): FiveNumberSummary | undefined; /** Calculate the covariance of two jointly-distributed variables. * * @param data An array of tuples of [x, y] coordinates of numbers or object number types * @returns The covariance, or `undefined` if less than 2 samples */ static covariance>(data: [x: T, y: T][]): T | undefined; static pcc>(data: [x: T, y: T][], type?: "sample" | "population"): T | undefined; }