diverge 1.1.1 → 1.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 +27 -0
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 91446f47cea184ffd150c7ea2c8970be6d44a1fa
4
- data.tar.gz: 9532bd8926e032f158c2d9edb8c718af5db32825
3
+ metadata.gz: cada24cba90e79e6f6f2c5523ade85fda85bfbe6
4
+ data.tar.gz: 5aef0f6dfd027d5b29e4470e5f0071e345e00b27
5
5
  SHA512:
6
- metadata.gz: d7843f4c6121463c566d5728ce85daad3bc927b66917f93d31614c7320420a682e0c7485102465a13a4c33cf3ca867d6b359ed5fecae8508d5eb43fe3f094885
7
- data.tar.gz: e43438b427a8282098ee472fd9e80e2acc2078392179b3ca1c744dfad8249a32eca8b250b7d21310958d021afac33a367a21546f749a66c3ab987df9b18a8097
6
+ metadata.gz: c608e7667be6f74f9e9612895ebb48f98f592a672f0764f7f2a88c46d2184b399a85fbc4b35c7fb71b8aed8758885033d187fd9ea07a2d411e1d895320ac4f5d
7
+ data.tar.gz: 2a1230dff0fae4904000e44d0092f26156e9d9cec081f00d32bf22c2d58f10557cac46631a9c212edc22cad14dc2ddcff568eb711fce49036c30554c4e8c5aca
data/lib/diverge.rb CHANGED
@@ -54,6 +54,16 @@ class Diverge
54
54
  end
55
55
 
56
56
  alias :corr :correlation
57
+
58
+ def spearman_correlation
59
+ p_ranks = list_ranks(p)
60
+ q_ranks = list_ranks(q)
61
+ d_squared = p.zip(q).map { |x, y| (p_ranks[x] - q_ranks[y]) ** 2 }
62
+
63
+ 1 - ((6 * d_squared.inject(&:+)) / (size * (size ** 2 - 1)))
64
+ end
65
+
66
+ alias :s_corr :spearman_correlation
57
67
 
58
68
  def debug
59
69
  self.class.debug
@@ -64,6 +74,23 @@ class Diverge
64
74
  end
65
75
 
66
76
  private
77
+
78
+ def list_ranks(list)
79
+ uniq_list = list.sort.uniq
80
+ Hash[*
81
+ list.
82
+ sort.
83
+ each_with_index.
84
+ group_by { |x, i| x }.
85
+ values.
86
+ map { |a| a.map(&:first).zip([a.map(&:last).avg + 1] * a.length).uniq }.
87
+ flatten
88
+ ]
89
+ end
90
+
91
+ def size
92
+ p.length == q.length ? p.length : [p.length, q.length]
93
+ end
67
94
 
68
95
  def debugger
69
96
  STDERR.puts yield if debug
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.1.1
4
+ version: '1.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-04-29 00:00:00.000000000 Z
11
+ date: 2013-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gsl
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  version: '0'
54
54
  requirements: []
55
55
  rubyforge_project:
56
- rubygems_version: 2.0.2
56
+ rubygems_version: 2.0.6
57
57
  signing_key:
58
58
  specification_version: 4
59
59
  summary: Distribution divergences.