diff options
author | Patrick Simianer <p@simianer.de> | 2016-07-05 11:01:46 +0200 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2016-07-05 11:01:46 +0200 |
commit | 2b1d7f881c19c4d4b5afae194e02d3300c7675d0 (patch) | |
tree | 5a06ee7de98640a39244b57bb369697176b44ebf /kendalls_tau | |
parent | 69949dda35c3ea21d8e926e5f0a596a0a0f61c6a (diff) |
mv
Diffstat (limited to 'kendalls_tau')
-rwxr-xr-x | kendalls_tau | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/kendalls_tau b/kendalls_tau deleted file mode 100755 index c0c20be..0000000 --- a/kendalls_tau +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env ruby - -################################################# -# reads space delimted pairs of scores as input, -# outputs Kendall's τ -################################################# - -def kendall_with_ties l - concordant = 0 - disconcordant = 0 - tie_a = 0 - tie_b = 0 - l.each_with_index { |k,i| - l[i+1,l.size].each_with_index { |m,j| - if (k.first < m.first && k[1] < m[1]) || - (k.first > m.first && k[1] > m[1]) - concordant += 1 - elsif (k.first == m.first && k[1] != m[1]) - tie_a += 1 - elsif (k.first != m.first && k[1] == m[1]) - tie_b += 1 - else - disconcordant += 1 - end - } - } - - return (concordant-disconcordant)/(Math.sqrt((concordant+disconcordant+tie_a)*(concordant+disconcordant+tie_b))) -end - -def kendall l - concordant = 0 - disconcordant = 0 - l.each_with_index { |k,i| - l[i+1,l.size].each_with_index { |m,j| - if (k.first <= m.first && k[1] <= m[1]) || - (k.first >= m.first && k[1] >= m[1]) - concordant += 1 - else - disconcordant += 1 - end - } - } - - return (concordant-disconcordant)/(0.5 * l.size * (l.size-1)) -end - -def has_ties? l - if l.map{ |p| p[1] }.uniq.size != l.size || - l.map{ |p| p[2] }.uniq.size != l.size - return true - end - - return false -end - -def main - l = [] - while line = STDIN.gets - a,b = line.split - l << [a.to_f, b.to_f] - end - - v = -1 - if has_ties? l - v = kendall_with_ties l - else - v = kendall l - end - - puts v -end - -main - |