Class: ActiveMetric::StandardDeviator

Inherits:
Object
  • Object
show all
Defined in:
lib/active_metric/calculators/standard_deviator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(property) ⇒ StandardDeviator



5
6
7
8
9
10
11
# File 'lib/active_metric/calculators/standard_deviator.rb', line 5

def initialize(property)
  @count = 0
  @property = property
  @sum = 0
  @sum_of_squares = 0
  @standard_deviation = 0.0
end

Instance Attribute Details

#countObject (readonly)

Returns the value of attribute count.



3
4
5
# File 'lib/active_metric/calculators/standard_deviator.rb', line 3

def count
  @count
end

#propertyObject (readonly)

Returns the value of attribute property.



3
4
5
# File 'lib/active_metric/calculators/standard_deviator.rb', line 3

def property
  @property
end

#sumObject (readonly)

Returns the value of attribute sum.



3
4
5
# File 'lib/active_metric/calculators/standard_deviator.rb', line 3

def sum
  @sum
end

#sum_of_squaresObject (readonly)

Returns the value of attribute sum_of_squares.



3
4
5
# File 'lib/active_metric/calculators/standard_deviator.rb', line 3

def sum_of_squares
  @sum_of_squares
end

Instance Method Details

#calculate(measurement) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/active_metric/calculators/standard_deviator.rb', line 13

def calculate(measurement)
  @standard_deviation = nil
  @count +=1
  value = measurement.send(property)
  @sum += value
  @sum_of_squares += value * value
end

#calculate_standard_deviationObject



25
26
27
28
# File 'lib/active_metric/calculators/standard_deviator.rb', line 25

def calculate_standard_deviation
  diff = mean_squares - (mean * mean)
  Math.sqrt(diff)
end

#meanObject



30
31
32
# File 'lib/active_metric/calculators/standard_deviator.rb', line 30

def mean
  sum.to_f / count
end

#mean_squaresObject



34
35
36
# File 'lib/active_metric/calculators/standard_deviator.rb', line 34

def mean_squares
  sum_of_squares.to_f / count
end

#standard_deviationObject



21
22
23
# File 'lib/active_metric/calculators/standard_deviator.rb', line 21

def standard_deviation
  @standard_deviation ||= calculate_standard_deviation
end