Commit | Line | Data |
---|---|---|
c3bc4705 | 1 | function[phi,rho,pi,llh] = constructionModelesLassoMLE(... |
0f51ccae BA |
2 | phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda,X,Y,seuil,tau,A1,A2) |
3 | ||
4 | PI = 4.0 * atan(1.0); | |
5 | ||
6 | %get matrix sizes | |
7 | n = size(X, 1); | |
8 | [p,m,k] = size(phiInit); | |
9 | L = length(glambda); | |
10 | ||
11 | %output parameters | |
12 | phi = zeros(p,m,k,L); | |
13 | rho = zeros(m,m,k,L); | |
14 | pi = zeros(k,L); | |
c3bc4705 | 15 | llh = zeros(L,2); |
0f51ccae BA |
16 | |
17 | for lambdaIndex=1:L | |
18 | % Procedure Lasso-MLE | |
19 | a = A1(:,1,lambdaIndex); | |
20 | a(a==0) = []; | |
21 | if length(a) == 0 | |
22 | continue; | |
23 | end | |
24 | [phiLambda,rhoLambda,piLambda,~,~] = EMGLLF(... | |
25 | phiInit(a,:,:),rhoInit,piInit,gamInit,mini,maxi,gamma,0,X(:,a),Y,tau); | |
26 | ||
27 | for j=1:length(a) | |
28 | phi(a(j),:,:,lambdaIndex) = phiLambda(j,:,:); | |
29 | end | |
30 | rho(:,:,:,lambdaIndex) = rhoLambda; | |
31 | pi(:,lambdaIndex) = piLambda; | |
32 | ||
33 | dimension = 0; | |
34 | for j=1:p | |
35 | b = A2(j,2:end,lambdaIndex); | |
36 | b(b==0) = []; | |
37 | if length(b) > 0 | |
38 | phi(A2(j,1,lambdaIndex),b,:,lambdaIndex) = 0.0; | |
39 | end | |
40 | c = A1(j,2:end,lambdaIndex); | |
41 | c(c==0) = []; | |
42 | dimension = dimension + length(c); | |
43 | end | |
44 | ||
45 | %on veut calculer l'EMV avec toutes nos estimations | |
46 | densite = zeros(n,L); | |
47 | for i=1:n | |
48 | for r=1:k | |
49 | delta = Y(i,:)*rho(:,:,r,lambdaIndex) - (X(i,a)*(phi(a,:,r,lambdaIndex))); | |
50 | densite(i,lambdaIndex) = densite(i,lambdaIndex) +... | |
51 | pi(r,lambdaIndex)*det(rho(:,:,r,lambdaIndex))/(sqrt(2*PI))^m*exp(-dot(delta,delta)/2.0); | |
52 | end | |
53 | end | |
c3bc4705 BA |
54 | llh(lambdaIndex,1) = sum(log(densite(:,lambdaIndex))); |
55 | llh(lambdaIndex,2) = (dimension+m+1)*k-1; | |
0f51ccae BA |
56 | end |
57 | ||
58 | end |