## micro-stats

This egg provides simple statistical operations. Very simple.

## Documentation

### Usage

(import micro-stats)

### Types

#### seq

#### binary-predicate

#### statistics-alist

*[type]*

`seq : (or string vector list)`

*[type]*

`binary-predicate : (* * --> boolean)`

*[type]*

`statistics-alist : (or null (list-of (pair symbol *)))`

**Note** an `seq` is anything understood as a sequence by the `sequences` egg.

### generate-statistics

*[procedure]*

`(generate-statistics SEQ [SET-ID]) -> statistics-alist`

`SEQ``(seq-of real)`; SEQ of all iterations, in microseconds`SET-ID``symbol`;`'normal`

Returns an `alist` with the following:

`size`- the count of the
`SEQ` `min`- the minimum runtime of the
`SEQ` `max`- the maximum runtime of the
`SEQ` `mean`- arithmetic-mean alias
`arithmetic-mean`- the arithmetic average runtime of the
`SEQ` `sd`- standard-deviation alias
`sigma`- standard-deviation alias
`standard-deviation`- the standard deviation for the
`SEQ`

When `verbose` adds the following:

`95th`- the 95th percentile runtime of the
`SEQ` `harmonic-mean`- the harmonic average runtime of the
`SEQ` `geometric-mean`- the geometric average runtime of the
`SEQ` `median`- the median runtime of the
`SEQ` `mode`- the mode runtime of the
`SEQ` `var`- variance alias
`sigma^2`- variance alias
`variance`- the variance for the
`SEQ`

### basic-statistics

*[procedure]*

`(basic-statistics) -> (vector-of real)`

Returns #(m h g s v).

### generate-statistics-alist

*[procedure]*

`(generate-statistics-alist SEQ FUNCS [BASICS]) -> statistics-alist`

Returns an `alist` for a set of statistical functions results.

`SEQ``(seq-of real)`; the sample`FUNCS``(list-of function-spec)`; the report template`BASICS``#(m h g s v)`; required statistics

A `function-spec` is:

`size`- sample count
`min`- sample minimum
`max`- sample maximum
`arithmetic-mean`- sample arithmetic-average
`standard-deviation`- sample standard-deviation
`percentile`- sample
`P`th-percentile ; default is`95` `harmonic-mean`- sample harmonic-average
`geometric-mean`- sample geometric-average
`median`- sample median
`mode`- sample mode
`variance`- sample variance
`(KEY . (F [PARAM ...]))`- sample parameterized
`(: F function-spec)`

### percentile

*[procedure]*

`(percentile SEQ [P]) -> real`

Returns `P`th percentile of `SEQ`.

`SEQ``(seq-of real)``P``[0 .. 100]`; defaults is`95`

### mean

*[procedure]*

`(mean SEQ) -> real real real`

Returns the *arithmetic*, *harmonic*, & *geometric* means for `SEQ`.

`SEQ``(seq-of real)`

### median

*[procedure]*

`(median SEQ [<?]) -> real`

Returns the *median* of the `SEQ`.

`SEQ``(seq-of real)``<?``binary-predicate`;*less-than*predicate, default`<`

### mode

*[procedure]*

`(mode SEQ [=?]) -> real`

Returns the *mode* of the `SEQ`.

`SEQ``(seq-of real)``=?``binary-predicate`;*equality*predicate, default`=`

### standard-deviation

*[procedure]*

`(standard-deviation SEQ [MEAN]) -> real real`

Returns the *standard-deviation*, & *variance* for `SEQ`, given the `MEAN`. Calculates the `MEAN` when not given.

`SEQ``(seq-of real)``MEAN``real`

## Requirements

## Authors

## Version history

- 0.0.1
- C5 release.

## License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

A full copy of the GPL license can be found at <http://www.gnu.org/licenses/>.