Exemplo n.º 1
0
class TestCrossTable (unittest.TestCase):

    def setUp(self):

        self.X = np.array([
            [1, 2, 1,],
            [1, 2, 1,],
            [0, 1, 2,]
        ])

        self.Y = np.array([
            [1, 1, 3,],
            [3, 2, 1,],
            [0, 3, 1,]
        ])

        self.T = np.array([
            [2, 0, 3],
            [2, 1, 0],
        ])
        self.sum_r = [5, 3]
        self.sum_s = [4, 1, 3]
        self.total = 8
        self.r = 2
        self.s = 3

        self.X = np.ma.array(self.X, mask=(self.X == 0))
        self.Y = np.ma.array(self.Y, mask=(self.Y == 0))

    def test_init(self):
        mess = 'compute table failed'
        table = CrossTable(self.X, self.Y)
        crTab = table.getCrosstable()
        for i in range(self.r):
            self.assertEqual(all(crTab[i]), all(self.T[i]), mess)
        self.assertEqual(all(table.getSumRows()), all(self.sum_r), mess)
        self.assertEqual(all(table.getSumCols()), all(self.sum_s), mess)
        self.assertEqual(table.n, self.total, mess)
        r,s = table.shape
        self.assertEqual(r, self.r, mess)
        self.assertEqual(s, self.s, mess)

        x = np.ma.array([1,2,3,4,5,5])
        y = np.ma.array([1,2,3,3,5,6])
        self.assertRaises(CrossTable(x,y))

        table = CrossTable(x,y, expand=True)
        for i in [1,2,3,4,5,6]:
            assert i in table.graduation_x
            assert i in table.graduation_y


    def test_getTransition(self):
        self.table = CrossTable(self.X, self.Y)

        fromClass, toClass = 1, 2
        self.assertEqual(self.table.getTransition(fromClass, toClass), 0)
        fromClass, toClass = 1, 3
        self.assertEqual(self.table.getTransition(fromClass, toClass), 3)

    def test_expectedTable(self):
        # CrossTable:
        # [2, 0, 3],
        # [2, 1, 0],

        table = CrossTable(self.X, self.Y)
        tab = table.getExpectedTable()
        answer = [
            [20/8.0, 5/8.0, 15/8.0],
            [12/8.0, 3/8.0,  9/8.0]
        ]
        np.testing.assert_array_equal(answer, tab)

        tab = table.getExpectedProbtable()
        answer = [
            [20/64.0, 5/64.0, 15/64.0],
            [12/64.0, 3/64.0,  9/64.0]
        ]
        np.testing.assert_array_equal(answer, tab)

        np.testing.assert_array_equal(table.getProbCols(), [4.0/8, 1.0/8, 3.0/8])
        np.testing.assert_array_equal(table.getProbRows(), [5.0/8, 3.0/8])
Exemplo n.º 2
0
class TestCrossTable(unittest.TestCase):
    def setUp(self):

        self.X = np.array([[
            1,
            2,
            1,
        ], [
            1,
            2,
            1,
        ], [
            0,
            1,
            2,
        ]])

        self.Y = np.array([[
            1,
            1,
            3,
        ], [
            3,
            2,
            1,
        ], [
            0,
            3,
            1,
        ]])

        self.T = np.array([
            [2, 0, 3],
            [2, 1, 0],
        ])
        self.sum_r = [5, 3]
        self.sum_s = [4, 1, 3]
        self.total = 8
        self.r = 2
        self.s = 3

        self.X = np.ma.array(self.X, mask=(self.X == 0))
        self.Y = np.ma.array(self.Y, mask=(self.Y == 0))

    def test_init(self):
        mess = 'compute table failed'
        table = CrossTable(self.X, self.Y)
        crTab = table.getCrosstable()
        for i in range(self.r):
            self.assertEqual(all(crTab[i]), all(self.T[i]), mess)
        self.assertEqual(all(table.getSumRows()), all(self.sum_r), mess)
        self.assertEqual(all(table.getSumCols()), all(self.sum_s), mess)
        self.assertEqual(table.n, self.total, mess)
        r, s = table.shape
        self.assertEqual(r, self.r, mess)
        self.assertEqual(s, self.s, mess)

        x = np.ma.array([1, 2, 3, 4, 5, 5])
        y = np.ma.array([1, 2, 3, 3, 5, 6])
        self.assertRaises(CrossTable(x, y))

        table = CrossTable(x, y, expand=True)
        for i in [1, 2, 3, 4, 5, 6]:
            assert i in table.graduation_x
            assert i in table.graduation_y

    def test_getTransition(self):
        self.table = CrossTable(self.X, self.Y)

        fromClass, toClass = 1, 2
        self.assertEqual(self.table.getTransition(fromClass, toClass), 0)
        fromClass, toClass = 1, 3
        self.assertEqual(self.table.getTransition(fromClass, toClass), 3)

    def test_expectedTable(self):
        # CrossTable:
        # [2, 0, 3],
        # [2, 1, 0],

        table = CrossTable(self.X, self.Y)
        tab = table.getExpectedTable()
        answer = [[20 / 8.0, 5 / 8.0, 15 / 8.0], [12 / 8.0, 3 / 8.0, 9 / 8.0]]
        np.testing.assert_array_equal(answer, tab)

        tab = table.getExpectedProbtable()
        answer = [[20 / 64.0, 5 / 64.0, 15 / 64.0],
                  [12 / 64.0, 3 / 64.0, 9 / 64.0]]
        np.testing.assert_array_equal(answer, tab)

        np.testing.assert_array_equal(table.getProbCols(),
                                      [4.0 / 8, 1.0 / 8, 3.0 / 8])
        np.testing.assert_array_equal(table.getProbRows(), [5.0 / 8, 3.0 / 8])