00001 #define __cplusplus__ 00002 #ifndef __IIDMIX__ 00003 #define __IIDMIX__ 00004 00005 #include<iostream> 00006 #include<istream> 00007 #include<fstream> 00008 #include<string> 00009 #include<vector> 00010 #include<sstream> 00011 #include <cmath> 00012 00013 00014 00015 #include <Spatial_Data.hpp> 00016 #include <Seg_Model.hpp> 00017 #include <Diag_Normal.hpp> 00018 #include <Normal.hpp> 00019 #include <HighDim_Normal.hpp> 00020 #include <Laplace.hpp> 00021 00022 00023 using namespace std; 00024 00025 00035 class IID_Mixture : public Seg_Model{ 00036 00037 protected: 00039 vector<double> Pi; 00040 00041 public : 00042 00044 IID_Mixture(); 00046 IID_Mixture(uint k, uint dim); 00048 IID_Mixture(uint k, vector<Distribution *> const & distrib); 00050 IID_Mixture(uint k, vector<Diag_Normal *> const & distrib); 00052 IID_Mixture(uint k, vector<Normal *> const & distrib); 00054 IID_Mixture(uint k, vector<HighDim_Normal *> const & distrib); 00056 IID_Mixture(uint k, vector<Laplace *> const & distrib); 00058 ~IID_Mixture(); 00059 00061 void Get_Pi( vector<double> & pi ); 00063 void Set_Pi( vector<double> const & pi ); 00064 00066 double LogLikelihood(Spatial_Data *spatd); 00068 double Completed_LogLikelihood(Spatial_Data *spatd, vector<double> const & tik ); 00069 00071 double BIC(Spatial_Data *spatd ); 00073 double ICL(Spatial_Data *spatd ); 00074 00076 void Estimate_Pi(vector<double> const & tik); 00078 void Estimate(Spatial_Data *spatd, vector<double> const & tik); 00079 00081 void Simulate(uint N, Data *dat); 00083 uint Degrees_Of_Freedom(); 00084 00086 void ReadFromFile(string filename); 00088 void WriteToFile(string filename); 00090 void Info(); 00091 00092 00093 }; 00094 00095 00096 #endif