[Scipy-tickets] [SciPy] #1823: kendalltau does not return -1 for reversed list.

SciPy Trac scipy-tickets@scipy....
Fri Jan 25 15:08:01 CST 2013


#1823: kendalltau does not return -1 for reversed list.
--------------------+-------------------------------------------------------
 Reporter:  jdean   |       Owner:  somebody   
     Type:  defect  |      Status:  new        
 Priority:  normal  |   Milestone:  Unscheduled
Component:  Other   |     Version:  0.11.0     
 Keywords:          |  
--------------------+-------------------------------------------------------
 I'm getting an unexpected result from stats.kendalltau.  I expect to
 get a correlation of -1 for reversed lists, and sometimes I don't.

 Setup:
 - I copied the kendalltau algorithm out of scipy.stats.stats.py, and
   created scipy_kendalltau.
   - This was a fresh source distribution 2013/01/25.

 - Add to the beginning of this new file:
 import numpy as np
 from math import erfc   # NOTE: This may be an issue

 # Start an ipython session.
 # Import the scipy kendalltau
 In [3]: from scipy_kendalltau import kendalltau
 # Import another version of kendall's tau
 In [4]: from compare_lists import kendalls_tau

 In [5]: a = [1,3,5,2,4,6]
 In [6]: arev = [6,4,2,5,3,1]

 # Behaves as expected for a reversed list, in both versions.
 In [7]: kendalltau(a, arev)
 Out[7]: (-1.0, 0.004832241997291933)

 In [8]: kendalls_tau(a, arev)
 Out[8]: -1.0

 # Now try a longer list.
 In [9]: x = [5, 32, 78, 48, 79, 110, 57, 17, 45, 24, 35, 22, 83, 25, 64,
 80, 53, 3, 20, 23, 33\
 , 54, 65, 26, 109, 4, 7, 105, 55, 8, 1, 21, 46, 82, 95, 15, 2, 52, 104,
 97, 85, 66, 86, 34, 10\
 1, 88, 61, 106, 9, 81, 13, 10, 91, 72, 99, 102, 43, 27, 74, 89, 6, 96,
 107, 70, 38, 36, 56, 10\
 8, 16, 93, 67, 18, 90, 49, 92, 68, 98, 19, 39, 73, 40, 12, 103, 50, 75,
 47, 11, 0, 28, 44, 58,\
  30, 94, 59, 41, 37, 62, 69, 14, 60, 76, 100, 29, 51, 84, 77, 63, 42, 87,
 31, 71]

 In [10]: xrev = x[:]
 In [11]: xrev.reverse()

 # The other version works as expected: -1 correlation for a reversed list.
 In [12]: kendalls_tau(x, xrev)
 Out[12]: -1.0

 # Oops run that again.
 In [13]: kendalls_tau(x, xrev)
 Out[13]: -1.0

 # But the scipy version gives an unexpected answer in this case.
 # - expected: -1 as the first return value
 # - got: -0.067649...
 In [14]: kendalltau(x, xrev)
 Out[14]: (-0.067649467649467651, 0.2925775144715035)

 Thank you,
 - Jim

 PS.  Please contact me via email (james@echonest.com) if
 you have any questions, as I only joined scipy so I could
 report this, and I won't see replies here.

-- 
Ticket URL: <http://projects.scipy.org/scipy/ticket/1823>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.


More information about the Scipy-tickets mailing list