Class: StatisticalArray::StatsArray

Inherits:
Object
  • Object
show all
Defined in:
lib/statistical_array/aliases.rb,
lib/statistical_array/statistical_array.rb

Instance Method Summary collapse

Constructor Details

#initialize(ary, template = nil) ⇒ StatsArray

Returns a new instance of StatsArray.



3
4
5
6
# File 'lib/statistical_array/statistical_array.rb', line 3

def initialize ary, template=nil
  @ary = Array(ary).flatten.compact
  @template_name = template || 'ArrayTemplate'
end

Instance Method Details

#avgObject



3
# File 'lib/statistical_array/aliases.rb', line 3

alias_method :avg, :mean

#maxObject



5
# File 'lib/statistical_array/aliases.rb', line 5

alias_method :max, :maximum

#maximumObject



16
17
18
# File 'lib/statistical_array/statistical_array.rb', line 16

def maximum
  @ary.max
end

#meanObject



20
21
22
# File 'lib/statistical_array/statistical_array.rb', line 20

def mean
  @ary.reduce(:+) / @ary.count.to_f
end

#medianObject



24
25
26
27
28
29
# File 'lib/statistical_array/statistical_array.rb', line 24

def median
  return nil if @ary.empty?
  n = @ary.size
  a = @ary.sort
  n.odd? ? a[(n-1)/2] : a[(n-1)/2,2].reduce(:+) / 2.0
end

#minObject



4
# File 'lib/statistical_array/aliases.rb', line 4

alias_method :min, :minimum

#minimumObject



12
13
14
# File 'lib/statistical_array/statistical_array.rb', line 12

def minimum
  @ary.min
end

#pop_stdObject



6
# File 'lib/statistical_array/aliases.rb', line 6

alias_method :pop_std, :population_standard_deviation

#population_standard_deviationObject



31
32
33
# File 'lib/statistical_array/statistical_array.rb', line 31

def population_standard_deviation
  Math.sqrt @ary.reduce(0) { |i, j| i + (j - mean)**2 } / @ary.count
end


8
9
10
# File 'lib/statistical_array/statistical_array.rb', line 8

def print
  Kernel.const_get(@template_name.to_s).render self
end

#sample_standard_deviationObject



35
36
37
# File 'lib/statistical_array/statistical_array.rb', line 35

def sample_standard_deviation
  Math.sqrt @ary.reduce(0) { |i, j| i + (j - mean)**2 } / (@ary.count - 1.5)
end

#std_devObject



7
# File 'lib/statistical_array/aliases.rb', line 7

alias_method :std_dev, :sample_standard_deviation

#sumObject



39
40
41
# File 'lib/statistical_array/statistical_array.rb', line 39

def sum
  @ary.reduce(:+)
end

#totalObject



8
# File 'lib/statistical_array/aliases.rb', line 8

alias_method :total, :sum