def setUp(self):
     
     # Basic parameters
     self.K = 10
     self.ds = 2
     self.do = 1
     
     # System matrices
     params = dict()
     params['F'] = np.array([[0.9,0.81],[0,0.9]])
     params['Q'] = np.array([[1,0],[0,1]])
     params['H'] = np.array([[1,0]])
     params['R'] = np.array([[1]])
     
     # Create model
     prior = GaussianDensity(np.array([0,0]), np.array([[100,0],[0,100]]))
     self.model = BasicLinearModel(self.ds, self.do, prior, params)
    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)
    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['Q'] = np.array([[0.1, 0.05, 0], [0.05, 0.1, 0.05],
                                [0, 0.05, 0.1]])
        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 = BasicLinearModel(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['Q'] = np.identity(self.ds)
        est_params['H'] = np.identity(self.do)
        est_params['R'] = np.identity(self.do)
        est_model = BasicLinearModel(self.ds, self.do, prior, est_params)
        self.est_model = est_model

        # Set MCMC parameters
        self.num_iter = 200
        self.num_burn = int(self.num_iter / 5)
plt.close('all')
filename = './results/toy-mcmc-degenerate.p'

K = 100
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']