Sha256: 80b45fcd62b24d98f5d8be51c7ccd899b34dbf7eccb98863f8d4c61796a70f46

Contents?: true

Size: 781 Bytes

Versions: 6

Compression:

Stored size: 781 Bytes

Contents

module GeneValidator
  # extention of the Array Class (i.e new methods for vectors)
  module ExtraArrayMethods
    def sum
      inject(0) { |accum, i| accum + i }
    end

    def mean
      sum / length.to_f
    end

    def median
      sorted = sort
      len    = sorted.length
      (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0
    end

    def mode
      freq = inject(Hash.new(0)) { |h, v| h[v] += 1; h }
      sort_by { |v| freq[v] }.last
    end

    def sample_variance
      m   = mean
      sum = inject(0) { |accum, i| accum + (i - m)**2 }
      sum / (length - 1).to_f
    end

    def standard_deviation
      Math.sqrt(sample_variance)
    end
  end
end

class Array
  include GeneValidator::ExtraArrayMethods

  def mean
    inject(:+).to_f / length
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
genevalidator-1.6.12 lib/genevalidator/ext/array.rb
genevalidator-1.6.11 lib/genevalidator/ext/array.rb
genevalidator-1.6.10 lib/genevalidator/ext/array.rb
genevalidator-1.6.9 lib/genevalidator/ext/array.rb
genevalidator-1.6.8 lib/genevalidator/ext/array.rb
genevalidator-1.6.6 lib/genevalidator/ext/array.rb