from pyhsmm.util.stats import whiten, cov import autoregressive.models as m import autoregressive.distributions as d ################### # generate data # ################### As = [0.99*np.hstack((-np.eye(2),2*np.eye(2))), 0.99*np.array([[np.cos(np.pi/6),-np.sin(np.pi/6)],[np.sin(np.pi/6),np.cos(np.pi/6)]]).dot(np.hstack((-np.eye(2),np.eye(2)))) + np.hstack((np.zeros((2,2)),np.eye(2))), 0.99*np.array([[np.cos(-np.pi/6),-np.sin(-np.pi/6)],[np.sin(-np.pi/6),np.cos(-np.pi/6)]]).dot(np.hstack((-np.eye(2),np.eye(2)))) + np.hstack((np.zeros((2,2)),np.eye(2)))] truemodel = m.ARHSMM( alpha=2.,init_state_distn='uniform', obs_distns=[d.AutoRegression(A=A,sigma=np.eye(2)) for A in As], dur_distns=[pyhsmm.basic.distributions.PoissonDuration(alpha_0=3*50,beta_0=3) for state in range(len(As))], ) data, labels = truemodel.generate(1000) data += np.random.normal(size=data.shape) # some extra noise fig, spa = plt.subplots(2,1) spa[0].plot(data[:,0],data[:,1],'bx-') spa[1].plot(data,'bx-') spa[1].set_xlim(0,data.shape[0]) fig.suptitle('data') truemodel.plot() plt.gcf().suptitle('truth')
from pyhsmm.basic.distributions import NegativeBinomialIntegerR2Duration import autoregressive.models as m import autoregressive.distributions as d ################### # generate data # ################### As = [np.hstack((-np.eye(2),2*np.eye(2))), np.array([[np.cos(np.pi/6),-np.sin(np.pi/6)],[np.sin(np.pi/6),np.cos(np.pi/6)]]).dot(np.hstack((-np.eye(2),np.eye(2)))) + np.hstack((np.zeros((2,2)),np.eye(2))), np.array([[np.cos(-np.pi/6),-np.sin(-np.pi/6)],[np.sin(-np.pi/6),np.cos(-np.pi/6)]]).dot(np.hstack((-np.eye(2),np.eye(2)))) + np.hstack((np.zeros((2,2)),np.eye(2)))] truemodel = m.ARHSMM( alpha=4.,init_state_concentration=4., obs_distns=[d.AutoRegression(A=A,sigma=0.1*np.eye(2)) for A in As], dur_distns=[pyhsmm.basic.distributions.PoissonDuration(alpha_0=4*25,beta_0=4) for state in range(len(As))], ) data = truemodel.rvs(1000) plt.figure() plt.plot(data[:,0],data[:,1],'bx-') ################## # create model # ################## Nmax = 20 affine = True