[Scipy-svn] r4237 - trunk/scipy/stats

scipy-svn@scip... scipy-svn@scip...
Tue May 6 12:16:53 CDT 2008


Author: pierregm
Date: 2008-05-06 12:16:51 -0500 (Tue, 06 May 2008)
New Revision: 4237

Modified:
   trunk/scipy/stats/mstats.py
Log:
mstats : kendall_tau : fixed a pb when n=2
         theil_slopes: return a (4,) tuple instead of a (3,(),) tuple

Modified: trunk/scipy/stats/mstats.py
===================================================================
--- trunk/scipy/stats/mstats.py	2008-05-06 17:14:47 UTC (rev 4236)
+++ trunk/scipy/stats/mstats.py	2008-05-06 17:16:51 UTC (rev 4237)
@@ -538,6 +538,9 @@
         y = ma.array(y, mask=m, copy=True)
         n -= m.sum()
     #
+    if n < 2:
+        return (np.nan, np.nan)
+    #
     rx = ma.masked_equal(rankdata(x, use_missing=use_missing),0)
     ry = ma.masked_equal(rankdata(y, use_missing=use_missing),0)
     idx = rx.argsort()
@@ -563,9 +566,12 @@
         v1 = np.sum(v*k*(k-1) for (k,v) in xties.iteritems()) * \
              np.sum(v*k*(k-1) for (k,v) in yties.iteritems())
         v1 /= 2.*n*(n-1)
-        v2 = np.sum(v*k*(k-1)*(k-2) for (k,v) in xties.iteritems()) * \
-             np.sum(v*k*(k-1)*(k-2) for (k,v) in yties.iteritems())
-        v2 /= 9.*n*(n-1)*(n-2)
+        if n > 2:
+            v2 = np.sum(v*k*(k-1)*(k-2) for (k,v) in xties.iteritems()) * \
+                 np.sum(v*k*(k-1)*(k-2) for (k,v) in yties.iteritems())
+            v2 /= 9.*n*(n-1)*(n-2)
+        else:
+            v2 = 0
     else:
         v1 = v2 = 0
     var_s /= 18.
@@ -752,7 +758,7 @@
     Ru = np.round((nt - z*sigma)/2. + 1)
     Rl = np.round((nt + z*sigma)/2.)
     delta = slopes[[Rl,Ru]]
-    return medslope, medinter, delta
+    return medslope, medinter, delta[0], delta[1]
 
 
 def sen_seasonal_slopes(x):



More information about the Scipy-svn mailing list