-def standard_deviation(r):

+def standard_deviation(r,sample=True):

"""Standard deviation, `from the Python Cookbook

<http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442412>`_

used to detect whether the average has been skewed by a few extremely high

+ This function as a default does compute the unbiased estimate

+ for the population standard deviation, by applying an unbiasing

+ factor of sqrt(N/(N-1)).

+ If you'd rather have the function compute the population standard

+ deviation, set sample=False.

The following examples are taken from Wikipedia.

http://en.wikipedia.org/wiki/Standard_deviation

>>> standard_deviation([6, 6, 8, 8])

+ >>> standard_deviation([0, 0, 14, 14], sample=False)

+ >>> standard_deviation([0, 6, 8, 14], sample=False)

+ >>> standard_deviation([6, 6, 8, 8], sample=False)

- (Wikipedia reports 7, 5, and 1 respectively. Some of the difference is

- due to rounding, but the rest may be a bug?)

+ (The results reported in Wikipedia are those expected for whole

+ population statistics and therefore are equal to the ones we get

+ by setting sample=False in the later tests)

# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

>>> standard_deviation([70, 70, 70, 75, 80, 85, 90, 95, 90, 80, 75, 70]) # doctest: +ELLIPSIS

+ >>> standard_deviation([70, 70, 70, 75, 80, 85, 90, 95, 90, 80, 75, 70], sample=False) # doctest: +ELLIPSIS

- # Fictitious average mothly temperatures in Montana.

+ # Fictitious average monthly temperatures in Montana.

# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

>>> standard_deviation([-32, -10, 20, 30, 60, 90, 100, 80, 60, 30, 10, -32]) # doctest: +ELLIPSIS

+ >>> standard_deviation([-32, -10, 20, 30, 60, 90, 100, 80, 60, 30, 10, -32], sample=False) # doctest: +ELLIPSIS

Most natural and random phenomena follow the normal distribution (aka the

bell curve), which says that most values are close to average but a few are

sdsq = sum([(i - avg) ** 2 for i in r])

- return (sdsq / (len(r) - 1 or 1)) ** 0.5

+ normal_denom=len(r) - 1 or 1

+ return (sdsq / normal_denom) ** 0.5

class SimpleStats(object):

"""Calculate a few simple stats on data.