Module: Statistica
- Defined in:
- lib/get_sum.rb,
lib/get_mode.rb,
lib/get_range.rb,
lib/get_stdev.rb,
lib/get_median.rb,
lib/get_product.rb,
lib/get_geo_mean.rb,
lib/get_variance.rb,
lib/get_harm_mean.rb,
lib/get_arith_mean.rb,
lib/get_percentile.rb,
lib/statistica/version.rb,
lib/get_coeff_variation.rb,
lib/get_relative_variance.rb,
lib/get_interquartile_range.rb
Constant Summary collapse
- VERSION =
"0.1.3"
Instance Method Summary collapse
- #get_arith_mean ⇒ Object
- #get_coeff_variation ⇒ Object
- #get_geo_mean ⇒ Object
- #get_harm_mean ⇒ Object
- #get_interquartile_range ⇒ Object
- #get_median ⇒ Object
- #get_mode ⇒ Object
- #get_percentile(n) ⇒ Object
- #get_product ⇒ Object
- #get_range ⇒ Object
- #get_relative_variance ⇒ Object
- #get_stdev ⇒ Object
- #get_sum ⇒ Object
- #get_variance ⇒ Object
Instance Method Details
#get_arith_mean ⇒ Object
2 3 4 5 |
# 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 ⇒ Object
2 3 4 5 |
# 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 ⇒ Object
2 3 4 5 |
# 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 ⇒ Object
2 3 4 5 6 |
# 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 ⇒ Object
2 3 4 |
# File 'lib/get_interquartile_range.rb', line 2 def get_interquartile_range self.get_percentile(75) - self.get_percentile(25) end |
#get_median ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 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 ⇒ Object
2 3 4 5 6 7 8 |
# 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) ⇒ Object
2 3 4 5 6 7 8 9 10 |
# 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 ⇒ Object
2 3 4 |
# File 'lib/get_product.rb', line 2 def get_product self.inject(:*) end |
#get_range ⇒ Object
2 3 4 |
# File 'lib/get_range.rb', line 2 def get_range self.max - self.min end |
#get_relative_variance ⇒ Object
2 3 4 5 6 |
# 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 ⇒ Object
2 3 4 5 |
# File 'lib/get_stdev.rb', line 2 def get_stdev stdev = Math.sqrt(self.get_variance) stdev.round(2) end |
#get_sum ⇒ Object
2 3 4 |
# File 'lib/get_sum.rb', line 2 def get_sum self.inject(:+) end |
#get_variance ⇒ Object
2 3 4 5 6 |
# 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 |