Module: Enumerable

Defined in:
lib/enumstats/enumerable.rb

Instance Method Summary collapse

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

#medianObject



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

#sumObject



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