Sha256: eca835c73d2e1c1f73d35268669212fdf317f5bc5d1979099af1c5d46968d99b

Contents?: true

Size: 849 Bytes

Versions: 52

Compression:

Stored size: 849 Bytes

Contents

module Bmg
  class Summarizer
    #
    # Variance summarizer
    #
    # Example:
    #
    #   # direct ruby usage
    #   Bmg::Summarizer.variance(:qty).summarize(...)
    #
    class Variance < Summarizer

      # Returns the least value.
      def least()
        [0, 0.0, 0.0]
      end

      # Aggregates on a tuple occurence.
      def _happens(memo, val) 
        count, mean, m2 = memo
        count += 1
        delta = val - mean
        mean  += (delta / count)
        m2    += delta*(val - mean)
        [count, mean, m2]
      end

      # Finalizes the computation.
      def finalize(memo) 
        count, mean, m2 = memo
        m2 / count
      end

    end # class Variance

    # Factors a variance summarizer
    def self.variance(*args, &bl)
      Variance.new(*args, &bl)
    end

  end # class Summarizer
end # module Bmg

Version data entries

52 entries across 52 versions & 1 rubygems

Version Path
bmg-0.23.3 lib/bmg/summarizer/variance.rb
bmg-0.23.2 lib/bmg/summarizer/variance.rb
bmg-0.23.1 lib/bmg/summarizer/variance.rb
bmg-0.23.0 lib/bmg/summarizer/variance.rb
bmg-0.21.5 lib/bmg/summarizer/variance.rb
bmg-0.21.4 lib/bmg/summarizer/variance.rb
bmg-0.20.5 lib/bmg/summarizer/variance.rb
bmg-0.19.3 lib/bmg/summarizer/variance.rb
bmg-0.21.3 lib/bmg/summarizer/variance.rb
bmg-0.21.2 lib/bmg/summarizer/variance.rb
bmg-0.21.0 lib/bmg/summarizer/variance.rb
bmg-0.20.4 lib/bmg/summarizer/variance.rb
bmg-0.20.2 lib/bmg/summarizer/variance.rb
bmg-0.20.1 lib/bmg/summarizer/variance.rb
bmg-0.20.0 lib/bmg/summarizer/variance.rb
bmg-0.19.2 lib/bmg/summarizer/variance.rb
bmg-0.19.1 lib/bmg/summarizer/variance.rb
bmg-0.19.0 lib/bmg/summarizer/variance.rb
bmg-0.18.15 lib/bmg/summarizer/variance.rb
bmg-0.18.14 lib/bmg/summarizer/variance.rb