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])
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) )