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)
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)
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)
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)
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)
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)