diverge 1.5.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
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.