You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 (± 9.6%) i/s - 75.705k in 5.098723s
while 22.238k (±16.2%) i/s - 107.732k in 5.068156s
sum 112.992k (± 6.9%) i/s - 572.468k in 5.091868s
# mean
Warming up --------------------------------------
inject 1.578k i/100ms
while 2.057k i/100ms
mean 9.855k i/100ms
Calculating -------------------------------------
inject 15.347k (± 8.6%) i/s - 77.322k in 5.076009s
while 21.669k (±14.5%) i/s - 106.964k in 5.074312s
mean 108.861k (± 8.9%) i/s - 542.025k in 5.021786s
# variance
Warming up --------------------------------------
inject 586.000 i/100ms
while 826.000 i/100ms
variance 8.475k i/100ms
Calculating -------------------------------------
inject 6.187k (± 6.7%) i/s - 31.058k in 5.043418s
while 8.597k (± 7.4%) i/s - 42.952k in 5.024587s
variance 84.702k (± 8.5%) i/s - 423.750k in 5.039936s
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.