def test_add(self): t1 = formula.term("t1") t2 = formula.term("t2") f = t1 + t2 self.assert_(isinstance(f, formula.formula)) self.assert_(f.hasterm(t1)) self.assert_(f.hasterm(t2))
def test_init(self): t1 = formula.term("trivial") sqr = lambda x: x*x t2 = formula.term("not_so_trivial", sqr, "sqr") self.assertRaises(ValueError, formula.term, "name", termname=0)
def test_termcolumns(self): t1 = formula.term("A") t2 = formula.term("B") f = t1 + t2 + t1 * t2 def other(val): return N.array([3.2*val,4.342*val**2, 5.234*val**3]) q = formula.quantitative(['other%d' % i for i in range(1,4)], termname='other', func=t1, transform=other) f += q q.namespace = f.namespace = self.formula.namespace assert_almost_equal(q(), f()[f.termcolumns(q)])
def test_mul(self): t1 = formula.term("t1") t2 = formula.term("t2") f = t1 * t2 self.assert_(isinstance(f, formula.formula)) intercept = formula.term("intercept") f = t1 * intercept self.assertEqual(str(f), str(formula.formula(t1))) f = intercept * t1 self.assertEqual(str(f), str(formula.formula(t1)))
def test_contrast2(self): dummy = formula.term('zero') self.namespace['zero'] = N.zeros((40,), N.float64) term = dummy + self.terms[2] c = contrast.Contrast(term, self.formula) c.getmatrix() test = [0]*2 + [1] + [0]*7 assert_almost_equal(c.matrix, test)
def setUp(self): self.X = R.standard_normal((40,10)) self.namespace = {} self.terms = [] for i in range(10): name = '%s' % string.uppercase[i] self.namespace[name] = self.X[:,i] self.terms.append(formula.term(name)) self.formula = self.terms[0] for i in range(1, 10): self.formula += self.terms[i] self.formula.namespace = self.namespace
def test_contrast3(self): X = self.formula.design() P = N.dot(X, L.pinv(X)) dummy = formula.term('noise') resid = N.identity(40) - P self.namespace['noise'] = N.transpose(N.dot(resid, R.standard_normal((40,5)))) terms = dummy + self.terms[2] terms.namespace = self.formula.namespace c = contrast.Contrast(terms, self.formula) c.getmatrix() self.assertEquals(c.matrix.shape, (10,))
def test_namespace(self): space1 = {'X':N.arange(50), 'Y':N.arange(50)*2} space2 = {'X':N.arange(20), 'Y':N.arange(20)*2} X = formula.term('X') Y = formula.term('Y') X.namespace = space1 assert_almost_equal(X(), N.arange(50)) Y.namespace = space2 assert_almost_equal(Y(), N.arange(20)*2) f = X + Y f.namespace = space1 self.assertEqual(f().shape, (2,50)) assert_almost_equal(Y(), N.arange(50)*2) assert_almost_equal(X(), N.arange(50)) f.namespace = space2 self.assertEqual(f().shape, (2,20)) assert_almost_equal(Y(), N.arange(20)*2) assert_almost_equal(X(), N.arange(20))
self._compute_sigma(ML=ML) self._compute_D(ML=ML) if not self.cont(ML=ML): break if __name__ == '__main__': import numpy.random as R nsubj = 400 units = [] n = 3 from scipy.sandbox.models.formula import term fixed = term('f') random = term('r') response = term('y') for i in range(nsubj): d = R.standard_normal() X = R.standard_normal((10,n)) Z = X[0:2] Y = R.standard_normal((n,)) + d * 4 units.append(Unit({'f':X, 'r':Z, 'y':Y})) #m = Mixed(units, response)#, fixed, random) m = Mixed(units, response, fixed, random) m.initialize() m.fit()
def test_str(self): t = formula.term("name") s = str(t)