#include "EMGLLF.h" #include "utils.h" #include #include #include // TODO: comment on constructionModelesLassoMLE purpose void constructionModelesLassoMLE_core( // IN parameters const float* phiInit, // parametre initial de moyenne renormalisé const float* rhoInit, // parametre initial de variance renormalisé const float* piInit,// parametre initial des proportions const float* 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 float gamma,// valeur de gamma : puissance des proportions dans la pénalisation pour un Lasso adaptatif const float* glambda, // valeur des paramètres de régularisation du Lasso const float* X, // régresseurs const float* Y, // réponse float seuil,// seuil pour prendre en compte une variable float 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 float* phi,// estimateur ainsi calculé par le Lasso float* rho,// estimateur ainsi calculé par le Lasso float* pi, // estimateur ainsi calculé par le Lasso float* lvraisemblance, // estimateur ainsi calculé par le Lasso // additional size parameters int n, // taille de l'echantillon int p, // nombre de covariables int m, // taille de Y (multivarié) int k, // nombre de composantes int L) // taille de glambda { //preparation: phi = 0 for (int u=0; u 0 //~ phi(A2(j,1,lambdaIndex),b,:,lambdaIndex) = 0.0; //~ end if (lengthB > 0) { for (int mm=0; mmdata[u*m+v] = rho[ai4(u,v,r,lambdaIndex,m,m,k,L)]; } gsl_linalg_LU_decomp(matrix, permutation, &signum); float detRhoR = gsl_linalg_LU_det(matrix, signum); //compute Y(i,:)*rho(:,:,r,lambdaIndex) for (int u=0; u float dotProduct = 0.0; for (int u=0; u