Saturday, March 29, 2014

Power means

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).

AltStyle によって変換されたページ (->オリジナル) /