class DegenerateModelLearningTestCase(unittest.TestCase): def setUp(self): # Basic parameters self.K = 100 self.ds = 3 self.do = 3 # System matrices params = dict() params['F'] = np.array([[0.9,0.8,0.7],[0,0.9,0.8],[0,0,0.7]]) params['rank'] = np.array([2]) params['vec'] = (1./np.sqrt(3))*np.array([[1,1],[1,1],[1,-1]]) params['val'] = np.array([1./5,1./2]) params['H'] = np.identity(self.do) params['R'] = 0.1*np.identity(self.do) self.params = params # Create model prior = GaussianDensity(np.zeros(self.ds), np.identity(self.ds)) self.model = DegenerateLinearModel(self.ds, self.do, prior, self.params) # Simulate data np.random.seed(1) self.state, self.observ = self.model.simulate_data(self.K) # Create initial estimated model est_params = dict() est_params['F'] = 0.5*np.identity(self.ds) est_params['rank'] = np.array([2]) est_params['vec'] = np.array([[1.0,0.0],[0.0,1.0],[0.0,0.0]]) est_params['val'] = np.array([1,1]) est_params['H'] = np.identity(self.do) est_params['R'] = np.identity(self.do) est_model = DegenerateLinearModel(self.ds, self.do, prior, est_params) self.est_model = est_model # Set MCMC parameters self.num_iter = 2000 self.num_burn = int(self.num_iter/5)
class DegenerateModelLearningTestCase(unittest.TestCase): def setUp(self): # Basic parameters self.K = 100 self.ds = 3 self.do = 3 # System matrices params = dict() params['F'] = np.array([[0.9, 0.8, 0.7], [0, 0.9, 0.8], [0, 0, 0.7]]) params['rank'] = np.array([2]) params['vec'] = (1. / np.sqrt(3)) * np.array([[1, 1], [1, 1], [1, -1]]) params['val'] = np.array([1. / 5, 1. / 2]) params['H'] = np.identity(self.do) params['R'] = 0.1 * np.identity(self.do) self.params = params # Create model prior = GaussianDensity(np.zeros(self.ds), np.identity(self.ds)) self.model = DegenerateLinearModel(self.ds, self.do, prior, self.params) # Simulate data np.random.seed(1) self.state, self.observ = self.model.simulate_data(self.K) # Create initial estimated model est_params = dict() est_params['F'] = 0.5 * np.identity(self.ds) est_params['rank'] = np.array([2]) est_params['vec'] = np.array([[1.0, 0.0], [0.0, 1.0], [0.0, 0.0]]) est_params['val'] = np.array([1, 1]) est_params['H'] = np.identity(self.do) est_params['R'] = np.identity(self.do) est_model = DegenerateLinearModel(self.ds, self.do, prior, est_params) self.est_model = est_model # Set MCMC parameters self.num_iter = 2000 self.num_burn = int(self.num_iter / 5)
ds = 4 do = 4 params = dict() params['F'] = np.array([[0.95,0.8,0.8,0.0],[0,0.95,-0.5,0.1],[0,0,1.6,-0.8],[0.0,0.0,1.0,0.0]]) params['rank'] = np.array([2]) params['val'] = np.array([1.5,0.5]) params['vec'] = np.array([[0.5,0.5,0.5,0.5],[1.0/np.sqrt(2),-1.0/np.sqrt(2),0.0,0.0]]).T params['Q'] = np.dot(params['vec'], np.dot(np.diag(params['val']), params['vec'].T)) params['H'] = np.identity(do) params['R'] = 0.03*np.identity(do) prior = GaussianDensity(np.zeros(ds), 10*np.identity(ds)) model = DegenerateLinearModel(ds, do, prior, params) state, observ = model.simulate_data(K) # Draw it fig, axs = plt.subplots(nrows=ds,ncols=1) for dd in range(ds): axs[dd].plot(observ[:,dd]) # Save the data fh = open(test_data_file, 'wb') pickle.dump([model, state, observ], fh) fh.close() est_params = deepcopy(params) est_params['F'] = 0.5*np.identity(ds) est_params['rank'] = np.array([4]) est_params['val'] = np.array([4.0,3.0,2.0,1.0])
ds = 3 do = 3 params = dict() params['F'] = np.array([[0.9, 0.8, 0.7], [0, 0.9, 0.8], [0, 0, 0.7]]) params['rank'] = np.array([2]) params['vec'] = (1. / np.sqrt(3)) * np.array([[1, 1], [1, 1], [1, -1]]) params['val'] = np.array([1. / 5, 1. / 2]) params['H'] = np.identity(do) params['R'] = 0.1 * np.identity(do) prior = GaussianDensity(np.zeros(ds), 100 * np.identity(ds)) model = DegenerateLinearModel(ds, do, prior, params) np.random.seed(0) state, observ = model.simulate_data(K) est_params = deepcopy(params) est_params['F'] = 0.5 * np.identity(ds) est_params['rank'] = np.array([2]) est_params['vec'] = np.array([[1, 0], [0, 1], [0, 0]]) est_params['val'] = np.array([1, 1]) est_params['R'] = np.identity(do) est_model = DegenerateLinearModel(ds, do, prior, est_params) hyperparams = dict() hyperparams['nu0'] = params['rank'] hyperparams['rPsi0'] = np.identity(ds) hyperparams['M0'] = np.zeros((ds, ds)) hyperparams['V0'] = np.identity(ds) hyperparams['a0'] = 1