# LispKit Math Stats

Library `(lispkit math stats)` implements statistical utility functions. The functions compute summary values for collections of samples, and functions for managing sequences of samples. Most of the functions accept a list of real numbers corresponding to sample values.

(mode xs) [procedure]

Computes the mode of a set of numbers xs. The mode is the value that appears most often in xs. xs is a proper list of numeric values. `=` is used as the equality operator.

(mean xs) [procedure]

Computes the arithmetic mean of a set of numbers xs. xs is a proper list of numeric values.

(range xs) [procedure]

Computes the range of a set of numbers xs, i.e. the difference between the largest and the smallest value. xs is a proper list of numeric values which are ordered using the `<` relation.

(variance xs) [procedure]
(variance xs bias)

Computes the variance for a set of numbers xs, optionally applying bias correction. xs is a proper list of numeric values. Bias correction gets enabled by setting bias to `#t`. Alternatively, it is possible to provide a positive integer, which is used instead of the number of elements in xs.

(stddev xs) [procedure]
(stddev xs bias)

Computes the standard deviation for a set of numbers xs, optionally applying bias correction. xs is a proper list of numeric values. Bias correction gets enabled by setting bias to `#t`. Alternatively, it is possible to provide a positive integer, which is used instead of the number of elements in xs.

(skewness xs) [procedure]
(skewness xs bias)

Computes the skewness for a set of numbers xs, optionally applying bias correction. xs is a proper list of numeric values. Bias correction gets enabled by setting bias to `#t`. Alternatively, it is possible to provide a positive integer, which is used instead of the number of elements in xs.

(kurtosis xs) [procedure]
(kurtosis xs bias)

Computes the kurtosis for a set of numbers xs, optionally applying bias correction. xs is a proper list of numeric values. Bias correction gets enabled by setting bias to `#t`. Alternatively, it is possible to provide a positive integer, which is used instead of the number of elements in xs.

(absdev xs) [procedure]

Computes the average absolute difference between the numbers in list xs and `(median xs)`.

(quantile xs p) [procedure]

Computes the p-quantile for a set of numbers xs (also known as the inverse cumulative distribution). p is a real number between 0 and 1.0. For instance, the 0.5-quantile corresponds to the median.

(percentile xs pct) [procedure]

Computes the percentile for a set of numbers xs and a given percentage pct. pct is a number between 0 and 100. For instance, the 90th percentile corresponds to the 0.9-quantile.

(median xs) [procedure]

Computes the median for a set of numbers xs.

(interquartile-range xs) [procedure]

Returns the interquartile range for a given set of numbers xs. xs is a proper list of numeric values. The interquartile range is the difference between the 0.75-quantile and the 0.25-quantile.

(five-number-summary xs) [procedure]

Returns a list of 5 statistics describing the set of numbers xs: the minimum value, the lower quartile, the median, the upper quartile, and the maximum value.

(covariance xs ys) [procedure]
(covariance xs ys bias)

Computes the covariance of two sets of numbers xs and ys. Both xs and ys are proper lists of numbers. Bias correction can be enabled by setting bias to `#t`. Alternatively, it is possible to provide a positive integer, which is used instead of the number of elements in xs.

(correlation xs ys) [procedure]
(correlation xs ys bias)

Computes the correlation of two sets of numbers xs and ys in form of the Pearson product-moment correlation coefficient. Both xs and ys are proper lists of numbers. Bias correction can be enabled by setting bias to `#t`. Alternatively, it is possible to provide a positive integer, which is used instead of the number of elements in xs.