#include "EMGLLF.h" #include "constructionModelesLassoMLE.h" #include #include #include "omp_num_threads.h" // TODO: comment on constructionModelesLassoMLE purpose void constructionModelesLassoMLE( // IN parameters const Real* phiInit, // parametre initial de moyenne renormalisé const Real* rhoInit, // parametre initial de variance renormalisé const Real* piInit, // parametre initial des proportions const Real* gamInit, // paramètre initial des probabilités a posteriori de chaque échantillon Int mini, // nombre minimal d'itérations dans l'algorithme EM Int maxi, // nombre maximal d'itérations dans l'algorithme EM Real gamma, // valeur de gamma : puissance des proportions dans la pénalisation pour un Lasso adaptatif const Real* glambda, // valeur des paramètres de régularisation du Lasso const Real* X, // régresseurs const Real* Y, // réponse Real seuil, // seuil pour prendre en compte une variable Real tau, // seuil pour accepter la convergence const Int* A1, // matrice des coefficients des parametres selectionnes const Int* A2, // matrice des coefficients des parametres non selectionnes // OUT parameters Real* phi, // estimateur ainsi calculé par le Lasso Real* rho, // estimateur ainsi calculé par le Lasso Real* pi, // estimateur ainsi calculé par le Lasso Real* lvraisemblance, // estimateur ainsi calculé par le Lasso // additional size parameters mwSize n, // taille de l'echantillon mwSize p, // nombre de covariables mwSize m, // taille de Y (multivarié) mwSize k, // nombre de composantes mwSize L) // taille de glambda { //preparation: phi = 0 for (mwSize u=0; u 0 //~ phi(A2(j,1,lambdaIndex),b,:,lambdaIndex) = 0.0; //~ end if (lengthB > 0) { for (mwSize mm=0; mmdata[u*m+v] = rho[u*m*k*L+v*k*L+r*L+lambdaIndex]; } gsl_linalg_LU_decomp(matrix, permutation, &signum); Real detRhoR = gsl_linalg_LU_det(matrix, signum); //compute Y(i,:)*rho(:,:,r,lambdaIndex) for (mwSize u=0; u Real dotProduct = 0.0; for (mwSize u=0; u