Beispiel #1
0
    def test_weights_ut_1d(self):
        # UT weights in 1D
        model = BayesSardModel(1,
                               self.ker_par_1d,
                               point_str='ut',
                               point_par=self.pt_par_ut)
        alpha = np.array([[0, 1, 2]])
        w, wc, wcc, emv, ivar = model.bq_weights(self.ker_par_1d, alpha)
        # UT weights in 1D reproduced?
        self.assertTrue(np.allclose(w, UnscentedTransform.weights(1)[0]))
        self.assertGreaterEqual(emv, 0)
        self.assertGreaterEqual(ivar, 0)
        # test positive definiteness
        try:
            la.cholesky(wc)
        except la.LinAlgError:
            self.fail("Weights not positive definite. Min eigval: {}".format(
                la.eigvalsh(wc).min()))

        # UT weights in 1D, different kappa and alpha
        model = BayesSardModel(1,
                               self.ker_par_1d,
                               point_str='ut',
                               point_par={
                                   'kappa': 2,
                                   'alpha': 1
                               })
        alpha = np.array([[0, 1, 2]])
        w, wc, wcc, emv, ivar = model.bq_weights(self.ker_par_1d, alpha)
        # UT weights in 1D reproduced?
        self.assertTrue(
            np.allclose(w,
                        UnscentedTransform.weights(1, kappa=2, alpha=1)[0]))
        self.assertGreaterEqual(emv, 0)
        self.assertGreaterEqual(ivar, 0)
        # test positive definiteness
        try:
            la.cholesky(wc)
        except la.LinAlgError:
            self.fail("Weights not positive definite. Min eigval: {}".format(
                la.eigvalsh(wc).min()))
Beispiel #2
0
 def test_weights_ut_5d(self):
     model = BayesSardModel(5,
                            np.array([[1.0, 25, 25, 25, 25, 25]]),
                            point_str='ut')
     alpha = np.hstack((np.zeros(
         (5, 1)), np.eye(5), 2 * np.eye(5))).astype(np.int)
     par = np.array([[1.0, 25, 25, 25, 25, 25]])
     w, wc, wcc, emv, ivar = model.bq_weights(par, alpha)
     # self.assertTrue(np.allclose(w, UnscentedTransform.weights(5, beta=0)[0]))
     self.assertGreaterEqual(emv, 0)
     self.assertGreaterEqual(ivar, 0)
     # test positive definiteness
     try:
         la.cholesky(wc)
     except la.LinAlgError:
         self.fail("Weights not positive definite. Min eigval: {}".format(
             la.eigvalsh(wc).min()))
Beispiel #3
0
 def test_weights_ut_2d(self):
     # UT weights in 2D
     par = np.array([[1.0, 1.0, 1]])
     alpha = np.array([[0, 1, 0, 2, 0], [0, 0, 1, 0, 2]])
     model = BayesSardModel(2,
                            par,
                            point_str='ut',
                            point_par=self.pt_par_ut)
     w, wc, wcc, emv, ivar = model.bq_weights(par, alpha)
     # UT weights reproduced in 2D?
     self.assertTrue(np.allclose(w, UnscentedTransform.weights(2)[0]))
     self.assertGreaterEqual(emv, 0)
     self.assertGreaterEqual(ivar, 0)
     # test positive definiteness
     try:
         la.cholesky(wc)
     except la.LinAlgError:
         self.fail("Weights not positive definite. Min eigval: {}".format(
             la.eigvalsh(wc).min()))
Beispiel #4
0
 def test_weights_gh5_1d(self):
     # GH-5 weights in 1D
     model = BayesSardModel(1,
                            self.ker_par_1d,
                            point_str='gh',
                            point_par={'degree': 5})
     alpha = np.array([[0, 1, 2, 3, 4]])
     w, wc, wcc, emv, ivar = model.bq_weights(self.ker_par_1d, alpha)
     # GH-5 weights in 1D reproduced?
     self.assertTrue(
         np.allclose(w, GaussHermiteTransform.weights(1, degree=5)))
     self.assertGreaterEqual(emv, 0)
     self.assertGreaterEqual(ivar, 0)
     # test positive definiteness
     try:
         la.cholesky(wc)
     except la.LinAlgError:
         self.fail("Weights not positive definite. Min eigval: {}".format(
             la.eigvalsh(wc).min()))
Beispiel #5
0
 def test_weights_gh3_2d(self):
     # GH-3 weights in 2D
     # there are 6 multivariate polynomials in 2D, UT has only 5 points in 2D
     model = BayesSardModel(2,
                            self.ker_par_2d,
                            point_str='gh',
                            point_par={'degree': 3})
     alpha = np.array([[0, 1, 0, 1, 2, 0, 1, 2, 2],
                       [0, 0, 1, 1, 0, 2, 2, 1, 2]])
     par = np.array([[1.0, 1, 1]])
     w, wc, wcc, emv, ivar = model.bq_weights(par, alpha)
     self.assertTrue(np.allclose(w, GaussHermiteTransform.weights(2, 3)))
     self.assertGreaterEqual(emv, 0)
     self.assertGreaterEqual(ivar, 0)
     # test positive definiteness
     try:
         la.cholesky(wc)
     except la.LinAlgError:
         self.fail("Weights not positive definite. Min eigval: {}".format(
             la.eigvalsh(wc).min()))
Beispiel #6
0
 def test_weights_sr_1d(self):
     # SR weights == UT weights for kappa=0 and alpha=1
     model = BayesSardModel(1,
                            self.ker_par_1d,
                            point_str='ut',
                            point_par={
                                'kappa': 0,
                                'alpha': 1
                            })
     alpha = np.array([[0, 1, 2]])
     w, wc, wcc, emv, ivar = model.bq_weights(self.ker_par_1d, alpha)
     # UT weights in 1D reproduced?
     self.assertTrue(np.allclose(w[1:],
                                 SphericalRadialTransform.weights(1)))
     self.assertGreaterEqual(emv, 0)
     self.assertGreaterEqual(ivar, 0)
     # test positive definiteness
     try:
         la.cholesky(wc)
     except la.LinAlgError:
         self.fail("Weights not positive definite. Min eigval: {}".format(
             la.eigvalsh(wc).min()))