Example #1
0
import os
proj_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
import sys
sys.path.append(proj_dir)
from HMM.mcmc import LTP_HMM_MCMC
import matplotlib.pyplot as plt
import ipdb

'''
This file demos the dgp and model fit for general LTP model that accounts for effort and attrition
'''

# meta parameters
N = 1000
T = 5
mcmc_instance = LTP_HMM_MCMC()



'''
# Mx = 2, My = 2, J=1, Exit
state_init_dist = np.array([0.6, 0.4])
state_transit_matrix = np.array([[0.6, 0.4],[0, 1]])
observ_matrix = np.array([[0.8,0.2],[0.2,0.8]])

Lambda = [0.3, 0.2]
betas = [np.log(1.2), np.log(1.1)]
h0_vec = [Lambda[0]*np.exp(betas[0]*t) for t in range(T)]
h1_vec = [Lambda[1]*np.exp(betas[1]*t) for t in range(T)]
hazard_matrix = np.array([h0_vec, h1_vec])
Example #2
0
state_transit_matrix = np.array([[0.6, 0.4],[0, 1]])
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) )