Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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)
Beispiel #4
0
                   [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)
Beispiel #5
0
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)
Beispiel #6
0
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