| 1 | # model SELECTion |
| 2 | |
| 3 | This code is the applied part of the PhD thesis of [Emilie Devijver](http://www.math.u-psud.fr/~devijver/). |
| 4 | |
| 5 | ## Description |
| 6 | |
| 7 | The function selmix delivers a multivariate Gaussian mixture in regression model collection. |
| 8 | According to the parameter estimation, we can compute classical model selection criterion, as BIC or AIC, or slope heuristic, using the CAPUSHE package. |
| 9 | The methodology used is described in 'Model-Based Clustering for High-Dimensional Data. Application to Functional Data.', |
| 10 | available at [this location](https://hal.archives-ouvertes.fr/hal-01060063) |
| 11 | |
| 12 | ## Arguments |
| 13 | |
| 14 | Regressors, denoted by X (of size n x p) and responses, denoted by Y (of size n x q) are must-have arguments. |
| 15 | |
| 16 | Optionally, we could add |
| 17 | |
| 18 | * gamma: weight power in the Lasso penalty (according to Stadler et al., $\gamma \in \{0,1/2,1\}$; |
| 19 | * mini: the minimum number of iterations; |
| 20 | * maxi: the maximum number of iterations; |
| 21 | * tau: the threshold for stopping EM algorithm; |
| 22 | * kmin and kmax: the bounds of interesting number of components, |
| 23 | * rangmin and rangmax: the bounds of interesting rank values. |
| 24 | |
| 25 | ## Usage |
| 26 | |
| 27 | objet = selmix(X,Y) |
| 28 | objet.run(index) |
| 29 | |
| 30 | For index=1, it computes the Lasso-MLE procedure. |
| 31 | For index=2, it computes the Lasso-Rank procedure. |
| 32 | |
| 33 | /!\ Be careful to the current path /!\ |
| 34 | |
| 35 | ## Values |
| 36 | |
| 37 | * phiInit, rhoInit, piInit, gamInit: the initialization of the matrices phi, rho, pi and gamma, |
| 38 | * gridLambda: grid of regularization parameters used to select relevant variables (if kmax-kmin=0, it is, if not, it is the last grid of regularization parameters) |
| 39 | * A1,A2: indices of variables selected or not selected (matrices of size (p+1) x q x size(gridLambda)) |
| 40 | * Phi,Rho,Pi: estimations of each parameter thanks to the procedure LassoMLE if compute index=1, and thanks to the procedure LassoRank if computed index=2. |
| 41 | |
| 42 | |
| 43 | ## Example |
| 44 | |
| 45 | n=10; |
| 46 | p=10; |
| 47 | q=5; |
| 48 | X=randn(n,p); |
| 49 | Y=randn(n,q); |
| 50 | |
| 51 | objet=selmix(X,Y); |
| 52 | objet.run(1); |
| 53 | objet.run(2); |