示例#1
0
 def test_no_estimated_values(self):
     """
     Tests if AssertionError is raised if there are no masked values in
     the estimation arrays, implying no parameters to be estimated. If
     the object passed in has no estimated values and an AssertionError
     is raised, the test passes. Otherwise if no estimated values are
     passed in and an AssertionError is not raised, the test fails.
     """
     mod_kwargs = self.mod_kwargs
     # replace a value in var_data with null
     mod_kwargs['lam_0_e'] = make_nomask([self.dim, 1])
     mod_kwargs['lam_1_e'] = make_nomask([self.dim, self.dim])
     self.assertRaises(AssertionError, Affine, **mod_kwargs)
示例#2
0
 def test_no_estimated_values(self):
     """
     Tests if AssertionError is raised if there are no masked values in
     the estimation arrays, implying no parameters to be estimated. If
     the object passed in has no estimated values and an AssertionError
     is raised, the test passes. Otherwise if no estimated values are
     passed in and an AssertionError is not raised, the test fails.
     """
     mod_kwargs = self.mod_kwargs
     # replace a value in var_data with null
     mod_kwargs['lam_0_e'] = make_nomask([self.dim, 1])
     mod_kwargs['lam_1_e'] = make_nomask([self.dim, self.dim])
     self.assertRaises(AssertionError, Affine, **mod_kwargs)
示例#3
0
 def test_wrong_lam0_size(self):
     """
     Tests whether size check asserts for lam_0_e is implemented
     correctly. If the lam_0_e parameter is not of the correct size,
     which is (L * O + U) by 1, then an assertion error should be raised,
     resulting in a passed test. If lam_0_e is of the incorrect size and
     no assertion error is raised, this test fails.
     """
     mod_kwargs = self.mod_kwargs
     # lam_0_e of incorrect size
     mod_kwargs['lam_0_e'] = make_nomask([self.dim - 1, 1])
     self.assertRaises(AssertionError, Affine, **mod_kwargs)
示例#4
0
 def test_wrong_lam0_size(self):
     """
     Tests whether size check asserts for lam_0_e is implemented
     correctly. If the lam_0_e parameter is not of the correct size,
     which is (L * O + U) by 1, then an assertion error should be raised,
     resulting in a passed test. If lam_0_e is of the incorrect size and
     no assertion error is raised, this test fails.
     """
     mod_kwargs = self.mod_kwargs
     # lam_0_e of incorrect size
     mod_kwargs['lam_0_e'] = make_nomask([self.dim - 1, 1])
     self.assertRaises(AssertionError, Affine, **mod_kwargs)
示例#5
0
    def setUpClass(self):

        ## Non-linear least squares
        np.random.seed(100)

        # initialize yield curve and VAR observed factors
        yc_data_test = pa.DataFrame(
            np.random.random((test_size - k_ar, nyields)))
        var_data_test = self.var_data_test = \
            pa.DataFrame(np.random.random((test_size, neqs)))
        self.mats = mats = list(range(1, nyields + 1))

        # initialize masked arrays
        self.dim_nolat = dim = k_ar * neqs
        lam_0 = make_nomask([dim, 1])
        lam_1 = make_nomask([dim, dim])
        delta_0 = make_nomask([1, 1])
        delta_1 = make_nomask([dim, 1])
        mu = make_nomask([dim, 1])
        phi = make_nomask([dim, dim])
        sigma = make_nomask([dim, dim])

        # Setup some of the elements as non-zero
        # This sets up a fake model where only lambda_0 and lambda_1 are
        # estimated
        lam_0[:neqs] = ma.masked
        lam_1[:neqs, :neqs] = ma.masked
        delta_0[:, :] = np.random.random(1)
        delta_1[:neqs] = np.random.random((neqs, 1))
        mu[:neqs] = np.random.random((neqs, 1))
        phi[:neqs, :] = np.random.random((neqs, dim))
        sigma[:, :] = np.identity(dim)

        self.mod_kwargs_nolat = {
            'yc_data': yc_data_test,
            'var_data': var_data_test,
            'k_ar': k_ar,
            'neqs': neqs,
            'mats': mats,
            'lam_0_e': lam_0,
            'lam_1_e': lam_1,
            'delta_0_e': delta_0,
            'delta_1_e': delta_1,
            'mu_e': mu,
            'phi_e': phi,
            'sigma_e': sigma
        }

        guess_params_nolat = np.random.random((neqs**2 + neqs)).tolist()
        affine_obj_nolat = Affine(**self.mod_kwargs_nolat)

        self.results = affine_obj_nolat.solve(guess_params_nolat,
                                              method='nls',
                                              xtol=0.1,
                                              ftol=0.1)
示例#6
0
    def setUp(self):

        np.random.seed(100)

        # initialize yield curve and VAR observed factors
        yc_data_test = pa.DataFrame(np.random.random((test_size - k_ar,
                                                      nyields)))
        var_data_test = pa.DataFrame(np.random.random((test_size, neqs)))
        mats = list(range(1, nyields + 1))

        # initialize masked arrays
        self.dim = dim = k_ar * neqs + latent
        lam_0 = make_nomask([dim, 1])
        lam_1 = make_nomask([dim, dim])
        delta_0 = make_nomask([1, 1])
        delta_1 = make_nomask([dim, 1])
        mu = make_nomask([dim, 1])
        phi = make_nomask([dim, dim])
        sigma = make_nomask([dim, dim])

        # Setup some of the elements as non-zero
        # This sets up a fake model where only lambda_0 and lambda_1 are
        # estimated
        lam_0[:neqs] = ma.masked
        lam_0[-latent:] = ma.masked
        lam_1[:neqs, :neqs] = ma.masked
        lam_1[-latent:, -latent:] = ma.masked
        delta_0[:, :] = np.random.random(1)
        delta_1[:neqs] = np.random.random((neqs, 1))
        mu[:neqs] = np.random.random((neqs, 1))
        phi[:neqs, :] = np.random.random((neqs, dim))
        sigma[:, :] = np.identity(dim)

        self.mod_kwargs = {
            'yc_data': yc_data_test,
            'var_data': var_data_test,
            'k_ar': k_ar,
            'neqs': neqs,
            'mats': mats,
            'lam_0_e': lam_0,
            'lam_1_e': lam_1,
            'delta_0_e': delta_0,
            'delta_1_e': delta_1,
            'mu_e': mu,
            'phi_e': phi,
            'sigma_e': sigma,
            'latent': latent,
            'no_err': [1]
        }

        self.guess_params = np.random.random((neqs**2 + neqs + (2 * latent),)
                                            ).tolist()
        self.affine_obj = Affine(**self.mod_kwargs)
        self.affineml_obj =  AffineML(**self.mod_kwargs)
示例#7
0
    def setUp(self):

        np.random.seed(100)

        # initialize yield curve and VAR observed factors
        yc_data_test = pa.DataFrame(
            np.random.random((test_size - k_ar, nyields)))
        var_data_test = pa.DataFrame(np.random.random((test_size, neqs)))
        mats = list(range(1, nyields + 1))

        # initialize masked arrays
        self.dim = dim = k_ar * neqs + latent
        lam_0 = make_nomask([dim, 1])
        lam_1 = make_nomask([dim, dim])
        delta_0 = make_nomask([1, 1])
        delta_1 = make_nomask([dim, 1])
        mu = make_nomask([dim, 1])
        phi = make_nomask([dim, dim])
        sigma = make_nomask([dim, dim])

        # Setup some of the elements as non-zero
        # This sets up a fake model where only lambda_0 and lambda_1 are
        # estimated
        lam_0[:neqs] = ma.masked
        lam_0[-latent:] = ma.masked
        lam_1[:neqs, :neqs] = ma.masked
        lam_1[-latent:, -latent:] = ma.masked
        delta_0[:, :] = np.random.random(1)
        delta_1[:neqs] = np.random.random((neqs, 1))
        mu[:neqs] = np.random.random((neqs, 1))
        phi[:neqs, :] = np.random.random((neqs, dim))
        sigma[:, :] = np.identity(dim)

        self.mod_kwargs = {
            'yc_data': yc_data_test,
            'var_data': var_data_test,
            'k_ar': k_ar,
            'neqs': neqs,
            'mats': mats,
            'lam_0_e': lam_0,
            'lam_1_e': lam_1,
            'delta_0_e': delta_0,
            'delta_1_e': delta_1,
            'mu_e': mu,
            'phi_e': phi,
            'sigma_e': sigma,
            'latent': latent,
            'no_err': [1]
        }

        self.guess_params = np.random.random(
            (neqs**2 + neqs + (2 * latent), )).tolist()
        self.affine_obj = Affine(**self.mod_kwargs)
        self.affineml_obj = AffineML(**self.mod_kwargs)
示例#8
0
    def setUpClass(self):

        ## Non-linear least squares
        np.random.seed(100)

        # initialize yield curve and VAR observed factors
        yc_data_test = pa.DataFrame(np.random.random((test_size - k_ar,
                                                      nyields)))
        var_data_test = self.var_data_test = \
            pa.DataFrame(np.random.random((test_size, neqs)))
        self.mats = mats = list(range(1, nyields + 1))

        # initialize masked arrays
        self.dim_nolat = dim = k_ar * neqs
        lam_0 = make_nomask([dim, 1])
        lam_1 = make_nomask([dim, dim])
        delta_0 = make_nomask([1, 1])
        delta_1 = make_nomask([dim, 1])
        mu = make_nomask([dim, 1])
        phi = make_nomask([dim, dim])
        sigma = make_nomask([dim, dim])

        # Setup some of the elements as non-zero
        # This sets up a fake model where only lambda_0 and lambda_1 are
        # estimated
        lam_0[:neqs] = ma.masked
        lam_1[:neqs, :neqs] = ma.masked
        delta_0[:, :] = np.random.random(1)
        delta_1[:neqs] = np.random.random((neqs, 1))
        mu[:neqs] = np.random.random((neqs, 1))
        phi[:neqs, :] = np.random.random((neqs, dim))
        sigma[:, :] = np.identity(dim)

        self.mod_kwargs_nolat = {
            'yc_data': yc_data_test,
            'var_data': var_data_test,
            'k_ar': k_ar,
            'neqs': neqs,
            'mats': mats,
            'lam_0_e': lam_0,
            'lam_1_e': lam_1,
            'delta_0_e': delta_0,
            'delta_1_e': delta_1,
            'mu_e': mu,
            'phi_e': phi,
            'sigma_e': sigma
        }

        guess_params_nolat = np.random.random((neqs**2 + neqs)).tolist()
        affine_obj_nolat = Affine(**self.mod_kwargs_nolat)

        self.results = affine_obj_nolat.solve(guess_params_nolat, method='nls',
                                              xtol=0.1, ftol=0.1)