initial commit
[valse.git] / README.md
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);