Inference='Method of moments'#'Variational Bayes'#'Method of moments'#'Variational Bayes' #'Method of moments' OR 'Maximum Likelihood' OR 'Variational Bayes' ML NOT INCLUDED YET
Number_of_Components=3
Components_Model=['Gauss','InvGamma','-InvGamma']#Each component can be Gauss, Gamma, InvGamma, -Gamma, -InvGamma
Inference='Variational Bayes'#'Method of moments'#'Variational Bayes' #'Variational Bayes' #'Method of moments' OR 'Maximum Likelihood' OR 'Variational Bayes' ML NOT INCLUDED YET
Number_of_Components=3
Components_Model=['Gauss','InvGamma','-InvGamma']#,'-Gamma'] #Each component can be Gauss, Gamma, InvGamma, -Gamma, -InvGamma
defMixture_Model_1Dim(data_vector,opts={'Inference':'Method of moments','Number_of_Components':3,'Components_Model':['Gauss','Gamma','-Gamma'],'init_params':[0,1,3,1,-3,1],'maxits':100,'tol':0.00001,'init_pi':np.true_divide(np.ones(3),3)}):
ifopts['Inference']=='Method of moments':
Model=Mix_Mod_MethodOfMoments(data_vector,opts)
#Model is a dictionary {'means','variances','Mixing Prop.''Likelihood','its','Final responsibilities'}
elifopts['Inference']=='Maximum Likelihood':
print("not implemented yet, very easy... do? Method of moments is a good approximation")