## micro-stats

This egg provides simple statistical operations. Very simple.

## Documentation

### Types

#### sequence

#### binary-predicate

#### statistics-alist

*[type]*

`sequence : (or string vector list ...)`

*[type]*

`binary-predicate : ('a 'a --> boolean)`

*[type]*

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

**Note** a `sequence` as understood by the `sequences` egg.

### Usage

(import micro-stats)

### generate-statistics

*[procedure]*

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

`SEQ``(sequence-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 of the
`SEQ` `max`- the maximum of the
`SEQ` `mean`- arithmetic-mean alias
`arithmetic-mean`- the arithmetic average 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 of the
`SEQ` `harmonic-mean`- the harmonic average of the
`SEQ` `geometric-mean`- the geometric average of the
`SEQ` `median`- the median of the
`SEQ` `mode`- the mode of the
`SEQ` `var`- variance alias
`sigma^2`- variance alias
`variance`- the variance for the
`SEQ`

### basic-statistics

*[procedure]*

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

Returns #(m h g s v) for the `SEQ`.

`SEQ``(sequence-of real)`; the sample

### generate-statistics-alist

*[procedure]*

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

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

`SEQ``(sequence-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``(sequence-of real)``P``[0 .. 100]`; defaults is`95`

### arithmetic-mean

*[procedure]*

`(arithmeticmean SEQ) -> real`

Returns the *arithmetic* mean for `SEQ`.

`SEQ``(sequence-of real)`

### mean

*[procedure]*

`(mean SEQ) -> real real real`

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

`SEQ``(sequence-of real)`

### median

*[procedure]*

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

Returns the *median* of the `SEQ`.

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

### mode

*[procedure]*

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

Returns the *mode* of the `SEQ`.

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

### variance

*[procedure]*

`(variance SEQ MEAN) -> real`

Returns the *variance* for `SEQ`, given the `MEAN`.

### 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``(sequence-of real)``MEAN``real`

## Requirements

srfi-1 sequences sequences-utils

## Authors

## Repository

This egg is hosted on the CHICKEN Subversion repository:

https://anonymous@code.call-cc.org/svn/chicken-eggs/release/5/micro-stats

If you want to check out the source code repository of this egg and you are not familiar with Subversion, see this page.

## Version history

- 0.1.0
- Add
`(sequences utils)`dependency. - 0.0.9
- Deprecate
`unfold>alist`as`unfold->alist`. - 0.0.8
- Add coercions. Better types. More tests.
- 0.0.7
- Export
`arithmetic-mean`&`variance`. - 0.0.3
- Missing dependency. Fix
`percentile`side-effecting. - 0.0.2
- Fix category.
- 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/>.