``````#  Statistics

[![Build Status](https://travis-ci.org/msharp/elixir-statistics.svg?branch=master)](https://travis-ci.org/msharp/elixir-statistics)
[![hex.pm version](https://img.shields.io/hexpm/v/statistics.svg?style=flat)](https://hex.pm/packages/statistics)

Statistics functions and distributions for [Elixir](https://github.com/elixir-lang/elixir).

## Usage

Add Statistics as a dependency in your `mix.exs` file to install from [hex.pm](https://hex.pm).

```elixir
def deps do
[
{ :statistics, "~> 0.5.0"}
]
end
```

After you are done, run `mix deps.get` in your shell to fetch and compile Statistics.

To try it out, start an interactive Elixir shell with `iex -S mix`.

Get the median value from a list

```
iex> Statistics.median([1,2,3])
2
```

Calculate the variance of a list of values.

```
iex> Statistics.variance([1,2,3,4])
1.25
```

Or draw a random number from a Gaussian distribution with a mean of 1 and standard deviation of 2.

```
iex> Statistics.Distributions.Normal.rand(1, 2)
2.5998185179627384
```

## Documentation

Elixir has great documentation tools using `ex_doc`.

The docs are hosted on [hexdocs.pm/statistics](http://hexdocs.pm/statistics/).

## Performance

This is not a library to use if you need fast computation.

Everything is implemented in Elixir. Many of the implementations use slow approximations, numerical function integration, or trial-and-error methods.

There is much room for improvement. To make this library really fast (and precise), we would probably need to interface with existing C libraries.

This library is evolving.

I plan to add common statistical tests and most common distributions.

## Contributing

I will accept pull requests.

If you want to contribute, please create a topic branch with tests.