### Power means

Before we get going, let me mention that my friends over at What does the quant say? have started a blog! This weeks post is about? You guessed it, statistics! You can check out "Getting our hands dirty with beta functions" by clicking here.

This post picks up where we left off in "Statistics", looking at different definitions for the mean of a sequence of numbers.

The geometric mean together with the arithmetic and harmonic means of the last post together are called the Pythagorean means.

let geometric_mean t = (*http://en.wikipedia.org/wiki/Geometric_mean The geometric mean is defined as the nth root (where n is the count of numbers) of the product of the numbers. *) let n = List.length t in let prod = List.fold_left (fun acc xi -> acc *. xi) 1.0 t in prod ** (1.0/.(float_of_int n))Note the presence of the power function

`powf`

(operator `( ** )`

)! How to compute values of this function was the focus of this post.
Here is yet another common mean, the quadratic mean.

let quadratic_mean t = (*http://en.wikipedia.org/wiki/Root_mean_square In mathematics, the root mean square (abbreviated RMS or rms), also known as the quadratic mean, is a statistical measure of the magnitude of a varying quantity. It is especially useful when variates are positive and negative, e.g., sinusoids. RMS is used in various fields, including electrical engineering. It can be calculated for a series of discrete values or for a continuously varying function. Its name comes from its definition as the square root of the mean of the squares of the values. *) let squares = List.fold_left (fun acc xi -> acc @ [xi *. xi]) [] t in sqrt (arithmetic_mean squares)

The generalized mean or "power mean" includes **all** of the means we have considered to date as special cases.

let power_mean p t = (*http://en.wikipedia.org/wiki/Generalized_mean In mathematics, generalized means are a family of functions for aggregating sets of numbers, that include as special cases the arithmetic, geometric, and harmonic means *) let powers = List.fold_left (fun acc xi -> acc @ [( ** ) xi p]) [] t in (arithmetic_mean powers)**(1.0/.p)

*Note: Recovering the geometric mean from this definition requires looking at the limit of the expression as p -> 0 and application of L'Hopital's rule (see http://en.wikipedia.org/wiki/Generalized_mean for the details).*