# simplestatistics   :game_die: Simple statistical functions implemented in readable Python.

2 years after

## simplestatistics

simple-statistics for Python.

`simplestatistics` is compatible with Python 2 & 3.

### Installation

Install the current PyPI release:

``pip install simplestatistics``

Or install the development version from GitHub:

``pip install git+https://github.com/sheriferson/simplestatistics``

### Usage

``````>>> import simplestatistics as ss
>>> ss.mean([1, 2, 3])
2.0
>>> ss.t_test([1, 2, 2.4, 3, 0.9], 2)
-0.3461277235039042``````

### Documentation

You can read the documentation online.

Or you can generate it yourself:

Inside `simplestatistics/`.

``make html``

Documentation will be generated in `_build/html/`.

### Tests

If you want coverage reports, you need to have `coverage` installed:

``````pip install coverage
nosetests --with-coverage --cover-package=simplestatistics --with-doctest``````

Otherwise, to just run the tests:

``nosetests --with-doctest``

### Functions and examples

#### Descriptive statistics

Function Example
Min `min([-3, 0, 3])`
Max `max([1, 2, 3])`
Sum `sum([1, 2, 3.5])`
Quantiles `quantile([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20], [0.25, 0.75])`
Product `product([1.25, 2.75], [2.5, 3.40])`

#### Measures of central tendency

Function Example
Mean `mean([1, 2, 3])`
Median `median([10, 2, -5, -1])`
Mode `mode([2, 1, 3, 2, 1])`
Geometric mean `geometric_mean([1, 10])`
Harmonic mean `harmonic_mean([1, 2, 4])`
Root mean square `root_mean_square([1, -1, 1, -1])`
Skewness `skew([1, 2, 5])`
Kurtosis `kurtosis([1, 2, 3, 4, 5])`

#### Measures of dispersion

Function Example
Sample and population variance `variance([1, 2, 3], sample = True)`
Sample and population Standard deviation `standard_deviation([1, 2, 3], sample = True)`
Sample and population Coefficient of variation `coefficient_of_variation([1, 2, 3], sample = True)`
Interquartile range `interquartile_range([1, 3, 5, 7])`
Sum of Nth power deviations `sum_nth_power_deviations([-1, 0, 2, 4], 3)`
Sample and population Standard scores (z-scores) `z_scores([-2, -1, 0, 1, 2], sample = True)`

#### Linear regression

Function Example
Simple linear regression `linear_regression([1, 2, 3, 4, 5], [4, 4.5, 5.5, 5.3, 6])`
Linear regression line function generator `linear_regression_line([.5, 9.5])([1, 2, 3])`

#### Similarity

Function Example
Correlation `correlate([2, 1, 0, -1, -2, -3, -4, -5], [0, 1, 1, 2, 3, 2, 4, 5])`

#### Distributions

Function Example
Factorial `factorial(20)` or `factorial([1, 5, 20])`
Choose `choose(5, 3)`
Normal distribution `normal(4, 8, 2)` or `normal([1, 4], 8, 2)`
Binomial distribution `binomial(4, 12, 0.2)` or `binomial([3,4,5], 12, 0.5)`
One-sample t-test `t_test([1, 2, 3, 4, 5, 6], 3.385)`

#### Classifiers

Function Example
Naive Bayesian classifier See documentation for examples of how to train and classify.
Perceptron See documentation for examples of how to train and classify.

#### Errors

Function Example
Gauss error function `error_function(1)`

### Spirit and rules

• Everything should be implemented in raw, organic, locally sourced Python.
• Use libraries only if you have to and only when unrelated to the math/statistics. For example, `from functools import reduce` to make `reduce` available for those using python3. That's okay, because it's about making Python work and not about making the stats easier.
• It's okay to use operators and functions if they correspond to regular calculator buttons. For example, all calculators have a built-in square root function, so there is no need to implement that ourselves, we can use `math.sqrt()`. Anything beyond that, like `mean`, `median`, we have to write ourselves.

Pull requests are welcome!

### Related Repositories

#### simple-statistics

simple statistics for node & browser javascript ...

#### simple-statistics.github.com

the website for simple statistics ...

#### elm-stats

Statistics for Elm ...

#### node-red-contrib-statistics

A Node Red node for calculating statistics on a flow. ...

### Releases

-   0.3.0 zip tar
-   0.2.5 zip tar
-   0.2.0 zip tar
-   0.1.5 zip tar
-   0.1.3 zip tar
-   0.1.2 zip tar
-   0.1.1 zip tar