# Enumerable::Statistics

Enumerable::Statistics provides some methods to calculate statistical summary in arrays and enumerables.

## Installation

Add this line to your application's Gemfile:

```
gem 'enumerable-statistics'
```

And then execute:

```
$ bundle
```

Or install it yourself as:

```
$ gem install enumerable-statistics
```

## Usage

You should load this library by the following line in your script at first.

```
require 'enumerable/statistics'
```

The following methods are supplied by this library:

`Array#mean`

,`Enumerable#mean`

- Calculates a mean of values in an array or an enumerable

`Array#variance`

,`Enumerable#variance`

- Calculates a variance of values in an array or an enumerable

`Array#stdev`

,`Enumerable#stdev`

- Calculates a standard deviation of values in an array or an enumerable

`Array#mean_variance`

,`Enumerable#mean_variance`

- Calculates a mean and a variance simultaneously

`Array#mean_stdev`

,`Enumerable#mean_stdev`

- Calculates a mean and a standard deviation simultaneously

`Array#median`

- Calculates a median of values in an array

`Array#percentile(q)`

- Calculates a percentile or percentiles of values in an array

`Array#value_counts`

,`Enumerable#value_counts`

, and`Hash#value_counts`

- Count how many items for each value in the container

`Array#histogram`

- Calculate histogram of the values in the array

Moreover, for Ruby < 2.4, `Array#sum`

and `Enumerable#sum`

are provided.

All methods scan a collection once to calculate statistics and preserve precision as possible.

## Performance

```
$ bundle exec rake bench
# sum
Warming up --------------------------------------
inject 1.545k i/100ms
while 2.342k i/100ms
sum 11.009k i/100ms
Calculating -------------------------------------
inject 15.016k (
```

## Development

After checking out the repo, run `bin/setup`

to install dependencies. You can also run `bin/console`

for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`

. To release a new version, update the version number in `version.rb`

, and then run `bundle exec rake release`

, which will create a git tag for the version, push git commits and tags, and push the `.gem`

file to rubygems.org.

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/mrkn/enumerable-statistics.