diverge 1.5.1 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/diverge.rb +17 -1
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e118aecccaa36aa8f9f9046bd16fd3bdfa8b9b4b
4
- data.tar.gz: e08bd99a7016e5c7956744a1c01fc4829b0cc6ca
3
+ metadata.gz: 7de447db693d2e50dbb261df278e7b32606ba921
4
+ data.tar.gz: 3ea2bbd20d21a8846ff954e40e02e0d3fa56209e
5
5
  SHA512:
6
- metadata.gz: d3d04705981edb06263dcfed6e489ce4d8995b8f9b9f4bcdaebcd27288cd4c341a1a26960437e2326f691a20efdd73df57806ef740ccc6d89870e4807c688586
7
- data.tar.gz: ff7c04da596033dab282fd67ff59dfdcc59a38d3836f4643b10984c0f4fe36709c4a12263dd506ebdb927a8941cfc9c29a5ac741c303c856fbe18b57172dd785
6
+ metadata.gz: e3197aeac30d5c43f9abec5748c873b6c9a34413a9483980cdd344fa5f1373991f2bcca199b3a925896f4f7a51adbd6bd7e2014323fb2fdada5b429a3c43022a
7
+ data.tar.gz: 430487c51caee42807d101cd525f8ab14726e879b52322d11bb189296e04ad7c0c0db11af21eec19201419c0cc17e3556d21a5054341ef4d41a3238d5e45af97
data/lib/diverge.rb CHANGED
@@ -48,11 +48,21 @@ class Diverge
48
48
  alias :kl :kullback_leibler
49
49
 
50
50
  def jensen_shannon
51
- 0.5 * (kl + kl(:reverse))
51
+ m = p.zip(q).map { |p_i, q_i| 0.5 * (p_i + q_i) }
52
+
53
+ silently do
54
+ 0.5 * (Diverge.new(p, m).kl + Diverge.new(q, m).kl)
55
+ end
52
56
  end
53
57
 
54
58
  alias :js :jensen_shannon
55
59
 
60
+ def j_divergence
61
+ 0.5 * (kl + kl(:reverse))
62
+ end
63
+
64
+ alias :j :j_divergence
65
+
56
66
  def total_variation_distance
57
67
  0.5 * p.zip(q).inject(0.0) { |sum, (i, j)| sum + (i - j).abs }
58
68
  end
@@ -91,6 +101,12 @@ class Diverge
91
101
  self.class.debug = value
92
102
  end
93
103
 
104
+ def silently(&block)
105
+ debug_value = debug
106
+ self.debug = false
107
+ (yield block).tap { self.debug = debug_value }
108
+ end
109
+
94
110
  private
95
111
 
96
112
  def list_ranks(list)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diverge
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Senter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-11 00:00:00.000000000 Z
11
+ date: 2013-10-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple collection of functions for determining the divergence between
14
14
  two distributions.
@@ -39,7 +39,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
39
  version: '0'
40
40
  requirements: []
41
41
  rubyforge_project:
42
- rubygems_version: 2.1.5
42
+ rubygems_version: 2.1.4
43
43
  signing_key:
44
44
  specification_version: 4
45
45
  summary: Distribution divergences.