module Statistica

Constants

VERSION

Public Instance Methods

get_arith_mean() click to toggle source
# File lib/get_arith_mean.rb, line 2
def get_arith_mean
  mean = self.get_sum.to_f / self.length
  mean.round(2)
end
get_coeff_variation() click to toggle source
# File lib/get_coeff_variation.rb, line 2
def get_coeff_variation
  variation = self.get_stdev/self.get_arith_mean
  variation.round(2)
end
get_geo_mean() click to toggle source
# File lib/get_geo_mean.rb, line 2
def get_geo_mean
  geo_mean = (self.get_product) ** (1.to_f / (self.length))
  geo_mean.round(2)
end
get_harm_mean() click to toggle source
# File lib/get_harm_mean.rb, line 2
def get_harm_mean
  recip = self.map { |element|(1/element.to_f) }
  harm_mean = 1/(recip.inject(:+)/self.length)
  harm_mean.round(2)
end
get_interquartile_range() click to toggle source
# File lib/get_interquartile_range.rb, line 2
def get_interquartile_range
  self.get_percentile(75) - self.get_percentile(25)
end
get_median() click to toggle source
# File lib/get_median.rb, line 2
def get_median
  # Confirm odd number of elements
  if self.sort!.length % 2 == 1
    median_odd = self[(self.length / 2)]
    median_odd
  # Confirm even number of elements
  elsif self.sort!.length % 2 == 0
    f_middle_element = self[(self.length / 2 - 1)]
    s_middle_element = self[(self.length / 2)]
    median_even = (f_middle_element + s_middle_element) / 2.0
    median_even
  end
end
get_mode() click to toggle source
# File lib/get_mode.rb, line 2
def get_mode
  array_sort = self.sort!
  elements = array_sort.uniq.map! { |actual_num| actual_num }
  elements_frequency = array_sort.uniq.map! { |num| array_sort.count(num) }
  highest_occuring_element_position = elements_frequency.index(elements_frequency.max)
  elements.fetch(highest_occuring_element_position)
end
get_percentile(n) click to toggle source
# File lib/get_percentile.rb, line 2
def get_percentile(n)
  sorted_array = self.sort
  percentile_index = n.to_f/100 * sorted_array.length
  if percentile_index == percentile_index.round
    result = (sorted_array[percentile_index.ceil - 1] + sorted_array[percentile_index.ceil])/2.to_f
  else
    sorted_array[percentile_index.ceil - 1]
  end
end
get_product() click to toggle source
# File lib/get_product.rb, line 2
def get_product
  self.inject(:*)
end
get_range() click to toggle source
# File lib/get_range.rb, line 2
def get_range
  self.max - self.min
end
get_relative_variance() click to toggle source
# File lib/get_relative_variance.rb, line 2
def get_relative_variance
  var_square = (self.get_variance) ** 2
  rel_variance = var_square/self.get_arith_mean
  rel_variance.round(2)
end
get_stdev() click to toggle source
# File lib/get_stdev.rb, line 2
def get_stdev
  stdev = Math.sqrt(self.get_variance)
  stdev.round(2)
end
get_sum() click to toggle source
# File lib/get_sum.rb, line 2
def get_sum
  self.inject(:+)
end
get_variance() click to toggle source
# File lib/get_variance.rb, line 2
def get_variance
  square_diff = self.map { |element| (element - self.get_arith_mean) ** 2 }
  variance = square_diff.get_sum / (square_diff.length - 1)
  variance.round(2)
end