Module: Babbage::Array
- Defined in:
- lib/babbage/array.rb
Class Method Summary collapse
- .average(array) ⇒ Object
- .maximum(array) ⇒ Object
- .mean(array) ⇒ Object
- .median(array) ⇒ Object
- .minimum(array) ⇒ Object
- .percentile(array, target) ⇒ Object
- .root_mean_square_deviation(array, &estimator) ⇒ Object
- .standard_deviation(array) ⇒ Object
- .sum(array) ⇒ Object
- .variance(array) ⇒ Object
Class Method Details
.average(array) ⇒ Object
5 6 7 |
# File 'lib/babbage/array.rb', line 5 def self.average(array) sum(array).to_f / array.length end |
.maximum(array) ⇒ Object
9 10 11 |
# File 'lib/babbage/array.rb', line 9 def self.maximum(array) array.max end |
.mean(array) ⇒ Object
13 14 15 |
# File 'lib/babbage/array.rb', line 13 def self.mean(array) average(array) end |
.median(array) ⇒ Object
17 18 19 |
# File 'lib/babbage/array.rb', line 17 def self.median(array) percentile(array, 50) end |
.minimum(array) ⇒ Object
21 22 23 |
# File 'lib/babbage/array.rb', line 21 def self.minimum(array) array.min end |
.percentile(array, target) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/babbage/array.rb', line 25 def self.percentile(array, target) target = target.to_f / 100.0 index = (array.length - 1) * target sorted_array = array.sort if index == index.to_i sorted_array[index.to_i] else average( sorted_array[index.floor, 2] ) end end |
.root_mean_square_deviation(array, &estimator) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/babbage/array.rb', line 38 def self.root_mean_square_deviation(array, &estimator) Math.sqrt( average( array.map(&estimator) ) ) end |
.standard_deviation(array) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/babbage/array.rb', line 46 def self.standard_deviation(array) avg = average(array) root_mean_square_deviation(array) do |value| (value - avg) ** 2 end end |
.sum(array) ⇒ Object
53 54 55 |
# File 'lib/babbage/array.rb', line 53 def self.sum(array) array.inject(0) {|sum,value| sum + value} end |
.variance(array) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/babbage/array.rb', line 57 def self.variance(array) avg = average(array) average( array.map {|value| (value - avg) ** 2 } ) end |