X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=src%2Fsources%2FconstructionModelesLassoMLE.c;h=a48f7d06fb3183e69c6cb1b6c9ca2d92afdf6d2d;hb=afa07d41c7592ac0ccd55d7af23c3bfef213291e;hp=bcbfd3c23c66d9dbca2531e33ad4a69605486a5b;hpb=493a35bfea6d1210c94ced8fbfe3e572f0389ea5;p=valse.git diff --git a/src/sources/constructionModelesLassoMLE.c b/src/sources/constructionModelesLassoMLE.c index bcbfd3c..a48f7d0 100644 --- a/src/sources/constructionModelesLassoMLE.c +++ b/src/sources/constructionModelesLassoMLE.c @@ -1,44 +1,44 @@ #include "EMGLLF.h" -#include "constructionModelesLassoMLE.h" +#include "utils.h" +#include #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 +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 - 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 + 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 - 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 + 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 (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]; + for (int v=0; vdata[u*m+v] = rho[ai4(u,v,r,lambdaIndex,m,m,k,L)]; } gsl_linalg_LU_decomp(matrix, permutation, &signum); - Real detRhoR = gsl_linalg_LU_det(matrix, signum); - + float 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