def make_synthetic_data(): mu_init = np.zeros(D) # mu_init[0] = 1.0 sigma_init = 0.5*np.eye(D) A = np.eye(D) # A[:2,:2] = \ # 0.99*np.array([[np.cos(np.pi/24), -np.sin(np.pi/24)], # [np.sin(np.pi/24), np.cos(np.pi/24)]]) sigma_states = 0.1*np.eye(D) # C = np.hstack((np.ones((K-1, 1)), np.zeros((K-1, D-1)))) C = 0. * np.random.randn(K-1, D) truemodel = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu=mu_init,sigma=sigma_init), dynamics_distn=AutoRegression(A=A,sigma=sigma_states), C=C ) data_list = [] Xs = [] for i in xrange(Ndata): data = truemodel.generate(T=T, N=N) data_list.append(data) Xs.append(data["x"]) return data_list, Xs
def make_synthetic_data(): mu_init = np.zeros(D) # mu_init[0] = 1.0 sigma_init = 0.5 * np.eye(D) A = np.eye(D) # A[:2,:2] = \ # 0.99*np.array([[np.cos(np.pi/24), -np.sin(np.pi/24)], # [np.sin(np.pi/24), np.cos(np.pi/24)]]) sigma_states = 0.1 * np.eye(D) # C = np.hstack((np.ones((K-1, 1)), np.zeros((K-1, D-1)))) C = 0. * np.random.randn(K - 1, D) truemodel = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu=mu_init, sigma=sigma_init), dynamics_distn=AutoRegression( A=A, sigma=sigma_states), C=C) data_list = [] Xs = [] for i in xrange(Ndata): data = truemodel.generate(T=T, N=N) data_list.append(data) Xs.append(data["x"]) return data_list, Xs
sigma_states = 0.1 * np.eye(D) K = 3 # C = np.hstack((np.ones((K-1, 1)), np.zeros((K-1, D-1)))) C = np.random.randn(K - 1, D) ################### # generate data # ################### model = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu=mu_init, sigma=sigma_init), dynamics_distn=AutoRegression(A=A, sigma=sigma_states), C=C) data = model.generate(T=T, N=N, keep=False) # data["x"] = np.hstack([np.zeros((T,K-1)), np.ones((T,1))]) # Estimate the held out likelihood using Monte Carlo M = 10000 hll_mc, std_mc = model._mc_heldout_log_likelihood(data["x"], M=M) # Estimate the held out log likelihood # hll_info, std_info = model._info_form_heldout_log_likelihood(data["x"], M=M) hll_dist, std_dist = model._distn_form_heldout_log_likelihood(data["x"], M=M) print("MC. Model: ", hll_mc, " +- ", std_mc) # print "AN. Model (info): ", hll_info, " +- ", std_info print("AN. Model (dist): ", hll_dist, " +- ", std_dist)
[np.sin(np.pi/24), np.cos(np.pi/24)]]) sigma_states = 0.1*np.eye(D) K = 3 # C = np.hstack((np.ones((K-1, 1)), np.zeros((K-1, D-1)))) C = np.random.randn(K-1, D) ################### # generate data # ################### model = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu=mu_init,sigma=sigma_init), dynamics_distn=AutoRegression(A=A,sigma=sigma_states), C=C ) data = model.generate(T=T, N=N, keep=False) # data["x"] = np.hstack([np.zeros((T,K-1)), np.ones((T,1))]) # Estimate the held out likelihood using Monte Carlo M = 10000 hll_mc, std_mc = model._mc_heldout_log_likelihood(data["x"], M=M) # Estimate the held out log likelihood # hll_info, std_info = model._info_form_heldout_log_likelihood(data["x"], M=M) hll_dist, std_dist = model._distn_form_heldout_log_likelihood(data["x"], M=M) print("MC. Model: ", hll_mc, " +- ", std_mc) # print "AN. Model (info): ", hll_info, " +- ", std_info print("AN. Model (dist): ", hll_dist, " +- ", std_dist)
C = np.random.randn(K - 1, D) sigma_obs = 0.01 * np.eye(K) ################### # generate data # ################### truemodel = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu=mu_init, sigma=sigma_init), dynamics_distn=AutoRegression(A=A, sigma=sigma_states), C=C) data = truemodel.generate(T=T) ################### # inference # ################### testmodel = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu_0=mu_init, sigma_0=sigma_init, kappa_0=1.0, nu_0=3.0), dynamics_distn=AutoRegression(nu_0=D + 1, S_0=np.eye(D), M_0=np.zeros((D, D)), K_0=np.eye(D)), sigma_C=1)
K = 4 # C = np.hstack((np.ones((K-1, 1)), np.zeros((K-1, D-1)))) C = np.random.randn(K-1, D) sigma_obs = 0.01 * np.eye(K) ################### # generate data # ################### truemodel = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu=mu_init,sigma=sigma_init), dynamics_distn=AutoRegression(A=A,sigma=sigma_states), C=C ) data = truemodel.generate(T=T) ################### # inference # ################### testmodel = MultinomialLDS(K, D, init_dynamics_distn=Gaussian(mu_0=mu_init, sigma_0=sigma_init, kappa_0=1.0, nu_0=3.0), dynamics_distn=AutoRegression(nu_0=D+1,S_0=np.eye(D),M_0=np.zeros((D,D)),K_0=np.eye(D)), sigma_C=1 ) testmodel.add_data(data["x"]) testdata = testmodel.data_list[0] N_samples = 100