Module: Starter::Mixins::Stats

Defined in:
lib/starter/mixins/statistics.rb

Class Method Summary collapse

Class Method Details

.mean(items) ⇒ Object



25
26
27
# File 'lib/starter/mixins/statistics.rb', line 25

def self.mean(items)
  items.sum.to_f / items.size
end

.median(items) ⇒ Object



41
42
43
# File 'lib/starter/mixins/statistics.rb', line 41

def self.median(items)
  self._median(items.sort)
end

.quartile(items, n) ⇒ Object

Raises:

  • (ArgumentError)


45
46
47
48
# File 'lib/starter/mixins/statistics.rb', line 45

def self.quartile(items, n)
  raise ArgumentError unless n > 0 && n < 4
  self._quartile(items.sort, n)
end

.standard_deviation(items) ⇒ Object



37
38
39
# File 'lib/starter/mixins/statistics.rb', line 37

def self.standard_deviation(items)
  Math.sqrt( items.variance )
end

.sum(items) ⇒ Object



21
22
23
# File 'lib/starter/mixins/statistics.rb', line 21

def self.sum(items)
  s = 0; items.each { |element| s += element }; s
end

.summary(items) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/starter/mixins/statistics.rb', line 7

def self.summary(items)
  sorted = items.sort
  [
    [:mean, sorted.mean],
    [:stddev, sorted.standard_deviation],
    [:min, sorted.first],
    [:q1, sorted._quartile(1)],
    [:median, sorted._median],
    [:q3, sorted._quartile(3)],
    [:max, sorted.last],
    [:sample_size, sorted.size]
  ]
end

.variance(items) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/starter/mixins/statistics.rb', line 29

def self.variance(items)
  denom = items.size - 1
  m = items.mean
  s = 0
  items.each { |element| s += (element - m)**2; }
  s / denom
end