data = [] for i in range(N): for t in range(T): j = np.random.binomial(1, pj) if t ==0: S = int( np.random.choice(3, 1, p=state_init_dist) ) E = int( np.random.binomial(1, valid_prob_matrix[j,S,1]) ) # response and feedback # If E = 1, generate valid data # If E = 0, generate 0 if E == 1: y = int( np.random.choice(3, 1, p=observ_matrix[j, S,:]) ) else: y = 0 # learning if E ==1: # no pain no gain S = int( np.random.choice(3, 1, p=state_transit_matrix[j, S, :]) ) data.append((i, t, j, y, 0, E)) est_param = mcmc_instance.estimate(data, max_iter = 100, is_effort=True) print(est_param) ipdb.set_trace()
observ_matrix = np.array([[0.8,0.2],[0.2,0.8]]) data = [] j = 0 for i in range(N): for t in range(T): if t ==0: S = int( np.random.binomial(1, state_init_dist[1]) ) else: S = int( np.random.binomial(1, state_transit_matrix[S, 1]) ) y = int( np.random.binomial(1, observ_matrix[S, 1]) ) data.append((i, t, j, y)) mcmc_instance = LTP_HMM_MCMC() est_param = mcmc_instance.estimate(data, chain_num=1, max_iter = 500) print('BKT') print(est_param) # Mx = 3, My = 3, J=1 (ZPD style) state_init_dist = np.array([0.25, 0.5, 0.25]) state_transit_matrix = np.array([[0.8,0.2,0],[0, 0.6, 0.4],[0, 0, 1]]) observ_matrix = np.array([[0.7,0.3,0.0],[0.2, 0.6, 0.2],[0.0, 0.1, 0.9]]) data = [] j = 0 for i in range(N): for t in range(T): if t ==0: S = int( np.random.choice(3, 1, p=state_init_dist) ) else: