Ejemplo n.º 1
0
void parameters::Mstep(datafile dat, model mod){
	const MatrixXi & omega=mod.Get_model(),mat=dat.Get_mat_datafile();
	const VectorXd & eff=dat.Get_eff_datafile();
	for (int k=0;k<m_proba.cols();k++){
		m_propor(k)= (eff.array()*(m_proba.col(k)).array()/m_proba.rowwise().sum().array()).sum() / eff.sum();
		for (int b=0;b<mat.cols();b++){
			if ((omega.row(k).array()==b).any()){
				const VectorXi & who=mod.Get_var_block(k,b);
				m_param[k][b].Mstep(who,mat,m_proba_block[k].col(b),m_proba.col(k).array()/m_proba.rowwise().sum().array(),eff);
			}
		}
	}
}
Ejemplo n.º 2
0
void parameters::Probapost(model mod, const MatrixXi & mat){
	const MatrixXi & omega=mod.Get_model();
	m_proba=MatrixXd::Ones(mat.rows(),omega.rows());
	for (int k = 0; k < omega.rows(); ++k) {
		m_proba_block[k]=m_proba_block[k].Ones(mat.rows(),(omega.rowwise().maxCoeff()(k)+1));
		for (int b = 0; b < (omega.rowwise().maxCoeff()(k)+1); ++b){

			if ((omega.row(k).array()==b).any()){
				const VectorXi & who=mod.Get_var_block(k,b);
				if (who.rows()>1){
					m_proba_block[k].col(b)=m_param[k][b].proba_indpt(who,mat)+m_param[k][b].proba_dpt(who,mat);
				}else{
					m_proba_block[k].col(b)=m_param[k][b].proba_indpt(who,mat);
				}
			}
		}
		m_proba.col(k)=m_propor(k)* (m_proba_block[k].rowwise().prod()).array();
	}
}
Ejemplo n.º 3
0
void parameters::Compte_nbparam(datafile dat,model mod){
	const MatrixXi & omega=mod.Get_model();
	int g=omega.rows();
	m_nbparam=g-1;
	for (int k=0;k<g;k++){
		for (int b=0;b<(omega.rowwise().maxCoeff()(k)+1) ;b++){
			if ((omega.row(k).array()==b).any()){
				const VectorXi & who=mod.Get_var_block(k,b);
				const VectorXi modalite=dat.Get_modalite(who);
				if (who.rows()==1){
					m_nbparam+=modalite(0)-1;
				}else{
					for (int h=0;h<modalite.rows();h++){
						m_nbparam+=modalite(h)-1;
					}
					m_nbparam+=modalite(0);
					if ((modalite(1)==2)&&(who.rows()==2)){m_nbparam--;}
				}
			}
		}
	}
}