Module: Starter::Mixins::Stats
- Defined in:
- lib/starter/mixins/statistics.rb
Class Method Summary collapse
- .mean(items) ⇒ Object
- .median(items) ⇒ Object
- .quartile(items, n) ⇒ Object
- .standard_deviation(items) ⇒ Object
- .sum(items) ⇒ Object
- .summary(items) ⇒ Object
- .variance(items) ⇒ Object
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
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 |