Next: lib-structs, Previous: lib-sockets, Up: The Prolog Library [Contents][Index]

`library(statistics)`

This library module provides commonly used sample and population statistics functions.
In this module, a `Sample` is simply a proper list of numbers, normally floating-point;
`Weight` is a proper list of numbers and should be of the same length as `Sample`.

**Please note:** These functions are plain textbook algorithms and we make no claims
about numerical stability, avoiding loss of precision, etc.

Exported predicates:

`min(`

`+Sample`,`-Value`)-
is true when

`Value`is the smallest element of`Sample`. `max(`

`+Sample`,`-Value`)-
is true when

`Value`is the largest element of`Sample`. `min_max(`

`+Sample`,`-Min`,`-Max`)-
is true when

`Min`(`Max`) is the smallest (largest) element of`Sample`. `range(`

`+Sample`,`-Value`)-
is true when

`Value`is the difference between the largest and smallest elements of`Sample`. `mode(`

`+Sample`,`-Values`)-
is true when

`Values`is the most frequently occurring value(s) in`Sample`. If there is a unique value with maximum frequency, this value is returned as the only element of`Values`. Otherwise,`Values`contains the maximum frequency elements in increasing order. This predicate does not make much sense if the sample is continuous. `mean(`

`+Sample`,`-Value`)`arithmetic_mean(`

`+Sample`,`-Value`)-
is true when

`Value`is the arithmetic mean of`Sample`. `weighted_mean(`

`+Weight`,`+Sample`,`-Value`)-
is true when

`Value`is the arithmetic mean of`Sample`weighted by`Weight`. `geometric_mean(`

`+Sample`,`-Value`)-
is true when

`Value`is the geometric mean of`Sample`. `harmonic_mean(`

`+Sample`,`-Value`)-
is true when

`Value`is the harmonic mean of`Sample`. `central_moment(`

`K`,`+Sample`,`-Value`)-
is true when

`Value`is the`K`-th central moment of`Sample`. Also known as the`K`-th central moment about the mean.`K`should be positive integer. `skewness(`

`+Sample`,`-Value`)-
is true when

`Value`is the skewness of`Sample`. This is a measure of the asymmetry of its distribution. A sample with negative skew is said to be*left-skewed*. Most of its mass is on the right of the distribution, with the tail on the left. Vice versa for positive skew. A sample’s skewness is undefined if its variance is zero. `kurtosis(`

`+Sample`,`-Value`)-
is true when

`Value`is the excess kurtosis of`Sample`. This is a measure of the peakedness of its distribution. A high kurtosis indicates that most of the sample’s variance is due to infrequent severe deviations, rather than frequent modest deviations. A sample’s excess kurtosis is undefined if its variance is zero. In this implementation, the kurtosis of the normal distribution is 0. `ml_variance(`

`+Sample`,`-Value`)`population_variance(`

`+Sample`,`-Value`)-
is true when

`Value`is the maximum likelihood estimate of the variance of`Sample`. Also known as the population variance, where the denominator is the length of`Sample`. `sample_variance(`

`+Sample`,`-Value`)`unbiased_variance(`

`+Sample`,`-Value`)-
is true when

`Value`is the unbiased estimate of the variance of`Sample`. Also known as the sample variance, where the denominator is the length of`Sample`minus one. `weighted_variance(`

`+Weight`,`+Sample`,`-Value`)-
is true when

`Value`is the weighted (biased) estimate of the variance of`Sample`. `ml_standard_deviation(`

`+Sample`,`-Value`)`population_standard_deviation(`

`+Sample`,`-Value`)-
is true when

`Value`is the maximum likelihood estimate of the standard deviation of`Sample`. Also known as the population standard deviation, where the denominator is the length of`Sample`. Equals the square root of the population variance. `sample_standard_deviation(`

`+Sample`,`-Value`)`unbiased_standard_deviation(`

`+Sample`,`-Value`)-
is true when

`Value`is the unbiased estimate of the standard deviation of`Sample`. Also known as the sample standard deviation, where the denominator is the length of`Sample`minus one. Equals the square root of the sample variance. `weighted_standard_deviation(`

`+Weight`,`+Sample`,`-Value`)-
is true when

`Value`is the weighted (biased) estimate of the standard deviation of`Sample`. Equals the square root of the weighted (biased) variance. `covariance(`

`+Sample1`,`+Sample2`,`-Value`)-
is true when

`Value`is the covariance of`Sample1`and`Sample2`. `correlation(`

`+Sample1`,`+Sample2`,`-Value`)-
is true when

`Value`is the correlation of`Sample1`and`Sample2`. If there is no variance in`Sample1`or in`Sample2`, an error is raised. `median(`

`+Sample`,`-Value`)-
is true when

`Value`is the median of`Sample`, that is, the value separating the higher half of the sample from the lower half. If there are an even number of observations, then the median is defined to be the smaller middle value. Same as the 0.5-fractile of`Sample`. `fractile(`

`P`,`+Sample`,`-Value`)-
is true when

`Value`is the`P`-fractile of`Sample`, that is, the smallest value in the sample such that the fraction`P`of the sample is less than or equal to that value.`P`should be a number in (0.0,1.0]. `normalize(`

`+Sample`,`-Normalized`)-
is true when

`Normalized`is the normalized`Sample`, so that`Normalized`has a mean of 0 and a population standard deviation of 1.

Send feedback on this subject.