module DescriptiveStatistics::Spread

Public Instance Methods

population_standard_deviation() click to toggle source
# File lib/descriptive-statistics/spread.rb, line 28
def population_standard_deviation
  return if length < 1
  Math.sqrt(population_variance)
end
population_variance() click to toggle source
# File lib/descriptive-statistics/spread.rb, line 10
def population_variance
  return if length < 1
  precalculated_mean = mean
  sum = self.inject(0) {|accumulator, value| accumulator + (value - precalculated_mean) ** 2 }
  sum / length.to_f
end
relative_standard_deviation() click to toggle source
# File lib/descriptive-statistics/spread.rb, line 22
def relative_standard_deviation
  return if length < 1
  precalculated_mean = mean
  (population_standard_deviation / precalculated_mean) * 100.0
end
standard_deviation() click to toggle source
# File lib/descriptive-statistics/spread.rb, line 17
def standard_deviation
  return if length < 2
  Math.sqrt(variance)
end
variance() click to toggle source
# File lib/descriptive-statistics/spread.rb, line 3
def variance
  return if length < 1
  precalculated_mean = mean
  sum = self.inject(0) {|accumulator, value| accumulator + (value - precalculated_mean) ** 2 }
  sum / (length.to_f - 1)
end
zscore() click to toggle source
# File lib/descriptive-statistics/spread.rb, line 33
def zscore
  return if length < 2
  stdev = standard_deviation
  m = mean
  stdev.zero? ? Array.new(self.length, 0) : self.collect { |v| (v - m) / stdev }
end