jtescher/descriptive-statistics

View on GitHub
lib/descriptive-statistics/shape.rb

Summary

Maintainability
A
0 mins
Test Coverage
module DescriptiveStatistics
  module Shape

    def skewness
      return if length == 0
      return 0 if length == 1
      sum_cubed_deviation / ((length - 1) * cubed_standard_deviation.to_f)
    end

    def kurtosis
      return if length == 0
      return 0 if length == 1
      sum_quarted_deviation / ((length - 1) * quarted_standard_deviation.to_f)
    end

  private

    def sum_cubed_deviation
      precalculated_mean = mean
      inject(0) {|sum, value| sum + (value - precalculated_mean) ** 3}
    end

    def cubed_standard_deviation
      standard_deviation ** 3
    end

    def sum_quarted_deviation
      precalculated_mean = mean
      inject(0) {|sum, value| sum + (value - precalculated_mean) ** 4}
    end

    def quarted_standard_deviation
      standard_deviation ** 4
    end

  end
end