Example #1
0
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()

Example #2
0
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: