Title: VAriabLe SElection with mixture of models
Date: 2016-12-01
Version: 0.1-0
-Description: TODO
+Description: Two methods are implemented to cluster data with finite mixture regression models.
+ Those procedures deal with high-dimensional covariates and responses through a variable selection
+ procedure based on the Lasso estimator. A low-rank constraint could be added, computed for the Lasso-Rank procedure.
+ A collection of models is constructed, varying the level of sparsity and the number of clusters, and a model is selected
+ using a model selection criterion (slope heuristic, BIC or AIC).
+ Details of the procedure are provided in 'Model-based clustering for high-dimensional data. Application to functional data'
+ by Emilie Devijver, published in Advances in Data Analysis and Clustering (2016)
Author: Benjamin Auder <Benjamin.Auder@math.u-psud.fr> [aut,cre],
Benjamin Goehry <Benjamin.Goehry@math.u-psud.fr> [aut]
Emilie Devijver <Emilie.Devijver@kuleuven.be> [aut]
kmin = "integer",
# maximum number of components in the mixture
kmax = "integer",
- rangmin = "integer",
- rangmax = "integer",
-
+ # ranks for the Lasso-Rank procedure
+ rank.min = "integer",
+ rank.max = "integer",
+
# Computed through the workflow
# initialisation for the reparametrized conditional mean parameter
Pi = "numeric",
#immutable (TODO:?)
- seuil = "numeric"
+ thresh = "numeric"
),
methods = list(
eps <<- ifelse (hasArg("eps"), eps, 1e-6)
kmin <<- ifelse (hasArg("kmin"), kmin, as.integer(2))
kmax <<- ifelse (hasArg("kmax"), kmax, as.integer(3))
- rangmin <<- ifelse (hasArg("rangmin"), rangmin, as.integer(2))
- rangmax <<- ifelse (hasArg("rangmax"), rangmax, as.integer(3))
- seuil <<- 1e-15 #immutable (TODO:?)
+ rank.min <<- ifelse (hasArg("rank.min"), rank.min, as.integer(2))
+ rank.max <<- ifelse (hasArg("rank.max"), rank.max, as.integer(3))
+ thresh <<- 1e-15 #immutable (TODO:?)
},
##################################
#from the grid: A1 corresponding to selected variables, and
#A2 corresponding to unselected variables.
params = selectiontotale(
- phiInit,rhoInit,piInit,tauInit,mini,maxi,gamma,gridLambda,X,Y,seuil,eps)
+ phiInit,rhoInit,piInit,tauInit,mini,maxi,gamma,gridLambda,X,Y,thresh,eps)
A1 <<- params$A1
A2 <<- params$A2
Rho <<- params$Rho
#compute parameter estimations, with the Maximum Likelihood
#Estimator, restricted on selected variables.
return ( constructionModelesLassoMLE(
- phiInit,rhoInit,piInit,tauInit,mini,maxi,gamma,gridLambda,X,Y,seuil,eps,A1,A2) )
+ phiInit,rhoInit,piInit,tauInit,mini,maxi,gamma,gridLambda,X,Y,thresh,eps,A1,A2) )
},
runProcedure2 = function()
#compute parameter estimations, with the Low Rank
#Estimator, restricted on selected variables.
return ( constructionModelesLassoRank(Pi,Rho,mini,maxi,X,Y,eps,
- A1,rangmin,rangmax) )
+ A1,rank.min,rank.max) )
},
run = function()
{
"main loop: over all k and all lambda"
- # Run the all procedure, 1 with the
+ # Run the whole procedure, 1 with the
#maximum likelihood refitting, and 2 with the Low Rank refitting.
p = dim(phiInit)[1]
m = dim(phiInit)[2]
# #TODO
# #model = odel(...)
# end
+ # Give at least the slope heuristic and BIC, and AIC ?
)
)