[Scipy-svn] r6465 - branches/0.8.x/scipy/stats/tests

scipy-svn at scipy.org scipy-svn at scipy.org
Tue Jun 1 03:58:06 EDT 2010


Author: oliphant
Date: 2010-06-01 02:58:06 -0500 (Tue, 01 Jun 2010)
New Revision: 6465

Modified:
   branches/0.8.x/scipy/stats/tests/test_distributions.py
Log:
Add test for fit method including test for fixing number of parameters.  Testing interface and calling only.   Does not do a statistical test on the computed parameters.

Modified: branches/0.8.x/scipy/stats/tests/test_distributions.py
===================================================================
--- branches/0.8.x/scipy/stats/tests/test_distributions.py	2010-06-01 05:54:12 UTC (rev 6464)
+++ branches/0.8.x/scipy/stats/tests/test_distributions.py	2010-06-01 07:58:06 UTC (rev 6465)
@@ -380,6 +380,47 @@
     assert_array_equal(b, a)
     assert_array_equal(c, [2] * numpy.size(a))
 
+import sys
+class TestFitMethod(TestCase):
+    skip = ['ncf']
+    def test_fit(self):
+        for func, dist, args, alpha in test_all_distributions():
+            if dist in self.skip:
+                continue
+            distfunc = getattr(stats, dist)
+            res = distfunc.rvs(*args, size=200)
+            vals = distfunc.fit(res)
+            if dist in ['erlang', 'frechet']:
+                assert(len(vals)==len(args))
+            else:
+                assert(len(vals) == 2+len(args))
 
+    def test_fix_fit(self):
+        for func, dist, args, alpha in test_all_distributions():
+            # Not sure why 'ncf', and 'beta' are failing
+            # erlang and frechet have different len(args) than distfunc.numargs
+            if dist in self.skip + ['erlang', 'frechet', 'beta']:
+                continue
+            distfunc = getattr(stats, dist)
+            res = distfunc.rvs(*args, size=200)
+            vals = distfunc.fit(res,floc=0)
+            vals2 = distfunc.fit(res,fscale=1)
+            assert(len(vals) == 2+len(args))
+            assert(vals[-2] == 0)
+            assert(vals2[-1] == 1)
+            assert(len(vals2) == 2+len(args))
+            if len(args) > 0:
+                vals3 = distfunc.fit(res, f0=args[0])
+                assert(len(vals3) == 2+len(args)) 
+                assert(vals3[0] == args[0])
+            if len(args) > 1:
+                vals4 = distfunc.fit(res, f1=args[1])
+                assert(len(vals4) == 2+len(args)) 
+                assert(vals4[1] == args[1])
+            if len(args) > 2:
+                vals5 = distfunc.fit(res, f2=args[2])
+                assert(len(vals5) == 2+len(args)) 
+                assert(vals5[2] == args[2])
+
 if __name__ == "__main__":
     run_module_suite()




More information about the Scipy-svn mailing list