Class: Stats

Inherits:
Object
  • Object
show all
Defined in:
lib/experiment/stats.rb

Class Method Summary collapse

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