module GeneValidator::ExtraArrayMethods
extention of the Array
Class (i.e new methods for vectors)
Public Instance Methods
all_quartiles()
click to toggle source
# File lib/genevalidator/ext/array.rb, line 33 def all_quartiles sorted = sort len = sorted.length split = sorted.median_split [ split[0].median(true), sorted.median(true), split[1].median(true) ] end
mean()
click to toggle source
# File lib/genevalidator/ext/array.rb, line 8 def mean sum / length.to_f end
median(already_sorted = false)
click to toggle source
# File lib/genevalidator/ext/array.rb, line 12 def median(already_sorted = false) sorted = already_sorted ? self : sort len = sorted.length (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0 end
median_split()
click to toggle source
# File lib/genevalidator/ext/array.rb, line 44 def median_split len = length center = len % 2 [self[0..len / 2 - 1], self[len / 2 + center..-1]] end
mode()
click to toggle source
# File lib/genevalidator/ext/array.rb, line 18 def mode freq = each_with_object(Hash.new(0)) { |v, h| h[v] += 1; } max_by { |v| freq[v] } end
sample_variance()
click to toggle source
# File lib/genevalidator/ext/array.rb, line 23 def sample_variance m = mean sum = inject(0) { |accum, i| accum + (i - m)**2 } sum / (length - 1).to_f end
standard_deviation()
click to toggle source
# File lib/genevalidator/ext/array.rb, line 29 def standard_deviation Math.sqrt(sample_variance) end
sum()
click to toggle source
# File lib/genevalidator/ext/array.rb, line 4 def sum inject(0) { |accum, i| accum + i } end