Sha256: 160d081ab0c1e9abb9b45e37863f826c395c097413bc3791f6ec086a37e1dbaa

Contents?: true

Size: 510 Bytes

Versions: 9

Compression:

Stored size: 510 Bytes

Contents

module Math

  # The Kullback-Leibler divergence from this array to that of +q+.
  #
  # NB: You will possibly want to sort both P and Q before calling this
  # depending on what you're actually trying to measure.
  #
  # http://en.wikipedia.org/wiki/Kullback-Leibler_divergence
  #
  def self.kldivergence(array, q)
    fail "Buggy."
    fail "Cannot compare differently sized arrays." unless size = q.size
    kld = 0
    each_with_index { |pi,i| kld += pi*Math::log(pi.to_f/q[i].to_f) }
    kld
  end

end

Version data entries

9 entries across 8 versions & 2 rubygems

Version Path
facets-glimmer-3.2.0 lib/standard/facets/math/kldivergence.rb
facets-3.1.0 lib/standard/facets/math/kldivergence.rb
facets-3.0.0 lib/standard/facets/math/kldivergence.rb
facets-2.9.3 lib/standard/facets/math/kldivergence.rb
facets-2.9.2 lib/standard/facets/math/kldivergence.rb
facets-2.9.2 src/standard/facets/math/kldivergence.rb
facets-2.9.1 lib/standard/facets/math/kldivergence.rb
facets-2.9.0 lib/more/facets/math/kldivergence.rb
facets-2.9.0.pre.2 lib/more/facets/math/kldivergence.rb