Module: Enumerable
- Defined in:
- lib/enumstats/enumerable.rb
Instance Method Summary collapse
- #average(&block) ⇒ Object (also: #mean)
- #median ⇒ Object
- #standard_deviation(&block) ⇒ Object
- #sum ⇒ Object
- #variance(&block) ⇒ Object
Instance Method Details
#average(&block) ⇒ Object Also known as: mean
6 7 8 |
# File 'lib/enumstats/enumerable.rb', line 6 def average(&block) sum(&block) / count.to_f end |
#median ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/enumstats/enumerable.rb', line 12 def median return nil if empty? mid = count / 2 sorted = to_a.sort if count.odd? (block_given? ? yield(sorted[mid]) : sorted[mid]) else if block_given? (yield(sorted[mid - 1]) + yield(sorted[mid])).to_f / 2.0 else (sorted[mid - 1] + sorted[mid]).to_f / 2.0 end end end |
#standard_deviation(&block) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/enumstats/enumerable.rb', line 34 def standard_deviation(&block) var = variance(&block) if (count > 1 && var != 0) Math.sqrt(var) else 0.0 end end |
#sum ⇒ Object
2 3 4 |
# File 'lib/enumstats/enumerable.rb', line 2 def sum inject(0){|acc, i| acc + (block_given? ? yield(i) : i)} end |
#variance(&block) ⇒ Object
29 30 31 32 |
# File 'lib/enumstats/enumerable.rb', line 29 def variance(&block) return 0 if empty? (sum_sq(&block) - ((sum(&block) ** 2) / count)) / (count - 1) end |