Class: Stats
- Inherits:
-
Object
- Object
- Stats
- Defined in:
- lib/experiment/stats.rb
Class Method Summary collapse
- .mean(ar) ⇒ Object
- .median(ar) ⇒ Object
- .range(ar) ⇒ Object
- .standard_deviation(ar) ⇒ Object
- .sum(ar, &block) ⇒ Object
- .variance(ar) ⇒ Object
- .z_score(ar, x) ⇒ Object
- .z_scores(ar) ⇒ Object
Class Method Details
.mean(ar) ⇒ Object
29 30 31 |
# File 'lib/experiment/stats.rb', line 29 def mean(ar) sum(ar) / ar.count end |
.median(ar) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/experiment/stats.rb', line 33 def median(ar) a = ar.sort if ar.count.odd? a[(ar.count-1)/2] else (a[ar.count/2 - 1] + a[ar.count/2]) / 2.0 end end |
.range(ar) ⇒ Object
25 26 27 |
# File 'lib/experiment/stats.rb', line 25 def range(ar) ar.max - ar.min end |
.standard_deviation(ar) ⇒ Object
13 14 15 |
# File 'lib/experiment/stats.rb', line 13 def standard_deviation(ar) Math.sqrt(variance(ar)) end |
.sum(ar, &block) ⇒ Object
4 5 6 |
# File 'lib/experiment/stats.rb', line 4 def sum(ar, &block) ar.reduce(0.0) {|asum, a| (block_given? ? yield(a) : a) + asum} end |
.variance(ar) ⇒ Object
8 9 10 11 |
# File 'lib/experiment/stats.rb', line 8 def variance(ar) v = sum(ar) {|x| (mean(ar) - x)**2.0 } v/(ar.count - 1.0) end |
.z_score(ar, x) ⇒ Object
21 22 23 |
# File 'lib/experiment/stats.rb', line 21 def z_score(ar, x) (x - mean(ar)) / standard_deviation(ar) end |
.z_scores(ar) ⇒ Object
17 18 19 |
# File 'lib/experiment/stats.rb', line 17 def z_scores(ar) ar.map {|x| z_score(ar, x)} end |