From f2a9120810d7e1e423c7b5c2c4320f4e27221f50 Mon Sep 17 00:00:00 2001
From: emilie <emilie@devijver.org>
Date: Tue, 6 Dec 2016 13:11:45 +0100
Subject: [PATCH] =?utf8?q?utilisation=20de=20k-means=20au=20lieu=20de=20hi?=
 =?utf8?q?erarchique=20dans=20initSmallEM=20-=20PB=20de=20dimensions=20dan?=
 =?utf8?q?s=20generateI0=20-=20cosm=C3=A9tique?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

---
 DESCRIPTION                  |  1 +
 NAMESPACE                    | 11 +++++++++++
 R/discardSimilarModels2.R    |  5 ++---
 R/generateIO.R               | 13 ++++++-------
 R/indicesSelection.R         |  2 +-
 R/initSmallEM.R              |  7 +++----
 R/main.R                     |  4 ++--
 R/modelSelection.R           |  1 -
 R/modelSelectionCrit.R       |  2 ++
 man/basic_Init_Parameters.Rd | 26 ++++++++++++++++++++++++++
 man/discardSimilarModels.Rd  | 27 +++++++++++++++++++++++++++
 man/discardSimilarModels2.Rd | 22 ++++++++++++++++++++++
 man/generateIO.Rd            | 26 ++++++++++++++++++++++++++
 man/generateIOdefault.Rd     | 24 ++++++++++++++++++++++++
 man/gridLambda.Rd            | 30 ++++++++++++++++++++++++++++++
 man/indicesSelection.Rd      | 21 +++++++++++++++++++++
 man/initSmallEM.Rd           | 24 ++++++++++++++++++++++++
 man/modelSelection.Rd        | 24 ++++++++++++++++++++++++
 man/vec_bin.Rd               | 20 ++++++++++++++++++++
 19 files changed, 272 insertions(+), 18 deletions(-)
 create mode 100644 NAMESPACE
 create mode 100644 R/modelSelectionCrit.R
 create mode 100644 man/basic_Init_Parameters.Rd
 create mode 100644 man/discardSimilarModels.Rd
 create mode 100644 man/discardSimilarModels2.Rd
 create mode 100644 man/generateIO.Rd
 create mode 100644 man/generateIOdefault.Rd
 create mode 100644 man/gridLambda.Rd
 create mode 100644 man/indicesSelection.Rd
 create mode 100644 man/initSmallEM.Rd
 create mode 100644 man/modelSelection.Rd
 create mode 100644 man/vec_bin.Rd

diff --git a/DESCRIPTION b/DESCRIPTION
index 8902f1a..07caf92 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -11,3 +11,4 @@ Depends:
 LazyData: yes
 URL: http://git.auder.net/?p=valse.git
 License: MIT
+RoxygenNote: 5.0.1
diff --git a/NAMESPACE b/NAMESPACE
new file mode 100644
index 0000000..c625f7e
--- /dev/null
+++ b/NAMESPACE
@@ -0,0 +1,11 @@
+# Generated by roxygen2: do not edit by hand
+
+export(basic_Init_Parameters)
+export(discardSimilarModels)
+export(discardSimilarModels2)
+export(generateIO)
+export(generateIOdefault)
+export(gridLambda)
+export(indicesSelection)
+export(initSmallEM)
+export(modelSelection)
diff --git a/R/discardSimilarModels2.R b/R/discardSimilarModels2.R
index d620bff..b59c1ba 100644
--- a/R/discardSimilarModels2.R
+++ b/R/discardSimilarModels2.R
@@ -4,10 +4,9 @@
 #' @param rho covariance matrix
 #' @param pi weight parameters
 #'
-#' @return
+#' @return a list with B1, in, rho, pi
 #' @export
 #'
-#' @examples
 discardSimilarModels2 = function(B1,rho,pi)
 {	ind = c()
 	dim_B1 = dim(B1)
@@ -16,6 +15,6 @@ discardSimilarModels2 = function(B1,rho,pi)
 	glambda = rep(0,sizeLambda)
 
 	suppressmodel = discardSimilarModels(B1,B2,glambda,rho,pi)
-	return (list(B1 = suppressmodel$B1, ind = suppressmodel$B2,
+	return (list(B1 = suppressmodel$B1, ind = suppressmodel$ind,
 		rho = suppressmodel$rho, pi = suppressmodel$pi))
 }
diff --git a/R/generateIO.R b/R/generateIO.R
index 83d8cc9..0e776d0 100644
--- a/R/generateIO.R
+++ b/R/generateIO.R
@@ -1,20 +1,19 @@
 #' Generate a sample of (X,Y) of size n
-#' @param covX covariance for covariates
-#' @param covY covariance for the response vector
+#' @param covX covariance for covariates (of size p*p*K)
+#' @param covY covariance for the response vector (of size m*m*K)
 #' @param pi   proportion for each cluster
 #' @param beta regression matrix
 #' @param n    sample size
+#' 
 #' @return list with X and Y
 #' @export
 #-----------------------------------------------------------------------
 generateIO = function(covX, covY, pi, beta, n)
 {
-  size_covX = dim(covX)
-  p = size_covX[1]
-  k = size_covX[3]
+  p = dim(covX)[1]
   
-  size_covY = dim(covY)
-  m = size_covY[1]
+  m = dim(covY)[1]
+  k = dim(covY)[3]
   
   Y = matrix(0,n,m)
   BX = array(0, dim=c(n,m,k))
diff --git a/R/indicesSelection.R b/R/indicesSelection.R
index 0445406..1adece6 100644
--- a/R/indicesSelection.R
+++ b/R/indicesSelection.R
@@ -1,4 +1,4 @@
-#' Construct the set of relevant indices
+#' Construct the set of relevant indices -> ED: je crois que cette fonction n'est pas utile
 #'
 #' @param phi regression matrix, of size p*m
 #' @param thresh threshold to say a cofficient is equal to zero
diff --git a/R/initSmallEM.R b/R/initSmallEM.R
index 1fa2d9b..8cfb7e8 100644
--- a/R/initSmallEM.R
+++ b/R/initSmallEM.R
@@ -22,12 +22,11 @@ initSmallEM = function(k,X,Y,tau)
   LLFinit1 = list()
   
   require(MASS) #Moore-Penrose generalized inverse of matrix
+  require(mclust) # K-means with selection of K
   for(repet in 1:20)
   {
-    clusters = hclust(dist(y)) #default distance : euclidean
-    #cutree retourne les indices (? quel cluster indiv_i appartient) d'un clustering hierarchique
-    clusterCut = cutree(clusters,k)
-    Zinit1[,repet] = clusterCut
+    clusters = Mclust(matrix(c(X,Y),nrow=n),k) #default distance : euclidean
+    Zinit1[,repet] = clusters$classification
     
     for(r in 1:k)
     {
diff --git a/R/main.R b/R/main.R
index 2eec878..9817b00 100644
--- a/R/main.R
+++ b/R/main.R
@@ -39,7 +39,7 @@ SelMix = setRefClass(
 		# initialisation for the allocations probabilities in each component
 		tauInit,
 		# values for the regularization parameter grid
-		gridLambda = [];
+		gridLambda = c(),
 		# je ne crois pas vraiment qu'il faille les mettre en sortie, d'autant plus qu'on construit
 		# une matrice A1 et A2 pour chaque k, et elles sont grandes, donc ca coute un peu cher ...
 		A1,
@@ -52,7 +52,7 @@ SelMix = setRefClass(
 		Pi,
 
 		#immutable
-		seuil = 1e-15;
+		seuil = 1e-15
 	),
 
 	methods = list(
diff --git a/R/modelSelection.R b/R/modelSelection.R
index 8020daa..5a79bb6 100644
--- a/R/modelSelection.R
+++ b/R/modelSelection.R
@@ -9,7 +9,6 @@
 #'         and D1, a vector of corresponding dimensions
 #' @export
 #'
-#' @examples
 modelSelection = function(LLF)
 {
   D = LLF[,2]
diff --git a/R/modelSelectionCrit.R b/R/modelSelectionCrit.R
new file mode 100644
index 0000000..81f373d
--- /dev/null
+++ b/R/modelSelectionCrit.R
@@ -0,0 +1,2 @@
+## Programme qui sélectionne un modèle
+## proposer à l'utilisation différents critères (BIC, AIC, slope heuristic)
\ No newline at end of file
diff --git a/man/basic_Init_Parameters.Rd b/man/basic_Init_Parameters.Rd
new file mode 100644
index 0000000..3be2e2d
--- /dev/null
+++ b/man/basic_Init_Parameters.Rd
@@ -0,0 +1,26 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/basicInitParameters.R
+\name{basic_Init_Parameters}
+\alias{basic_Init_Parameters}
+\title{Initialize the parameters in a basic way (zero for the conditional mean,
+ uniform for weights, identity for covariance matrices, and uniformly distributed forthe clustering)}
+\usage{
+basic_Init_Parameters(n, p, m, k)
+}
+\arguments{
+\item{n}{sample size}
+
+\item{p}{number of covariates}
+
+\item{m}{size of the response}
+
+\item{k}{number of clusters}
+}
+\value{
+list with phiInit, rhoInit,piInit,gamInit
+}
+\description{
+Initialize the parameters in a basic way (zero for the conditional mean,
+ uniform for weights, identity for covariance matrices, and uniformly distributed forthe clustering)
+}
+
diff --git a/man/discardSimilarModels.Rd b/man/discardSimilarModels.Rd
new file mode 100644
index 0000000..0a73b7e
--- /dev/null
+++ b/man/discardSimilarModels.Rd
@@ -0,0 +1,27 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/discardSimilarModels.R
+\name{discardSimilarModels}
+\alias{discardSimilarModels}
+\title{Discard models which have the same relevant variables}
+\usage{
+discardSimilarModels(B1, B2, glambda, rho, pi)
+}
+\arguments{
+\item{B1}{array of relevant coefficients (of size p*m*length(gridlambda))}
+
+\item{B2}{array of irrelevant coefficients (of size p*m*length(gridlambda))}
+
+\item{glambda}{grid of regularization parameters (vector)}
+
+\item{rho}{covariance matrix (of size m*m*K*size(gridLambda))}
+
+\item{pi}{weight parameters (of size K*size(gridLambda))}
+}
+\value{
+a list with update B1, B2, glambda, rho and pi, and ind the vector of indices
+ of selected models.
+}
+\description{
+Discard models which have the same relevant variables
+}
+
diff --git a/man/discardSimilarModels2.Rd b/man/discardSimilarModels2.Rd
new file mode 100644
index 0000000..05c0e61
--- /dev/null
+++ b/man/discardSimilarModels2.Rd
@@ -0,0 +1,22 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/discardSimilarModels2.R
+\name{discardSimilarModels2}
+\alias{discardSimilarModels2}
+\title{Similar to discardSimilarModels, for Lasso-rank procedure (focus on columns)}
+\usage{
+discardSimilarModels2(B1, rho, pi)
+}
+\arguments{
+\item{B1}{array of relevant coefficients (of size p*m*length(gridlambda))}
+
+\item{rho}{covariance matrix}
+
+\item{pi}{weight parameters}
+}
+\value{
+a list with B1, in, rho, pi
+}
+\description{
+Similar to discardSimilarModels, for Lasso-rank procedure (focus on columns)
+}
+
diff --git a/man/generateIO.Rd b/man/generateIO.Rd
new file mode 100644
index 0000000..b420156
--- /dev/null
+++ b/man/generateIO.Rd
@@ -0,0 +1,26 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/generateIO.R
+\name{generateIO}
+\alias{generateIO}
+\title{Generate a sample of (X,Y) of size n}
+\usage{
+generateIO(covX, covY, pi, beta, n)
+}
+\arguments{
+\item{covX}{covariance for covariates}
+
+\item{covY}{covariance for the response vector}
+
+\item{pi}{proportion for each cluster}
+
+\item{beta}{regression matrix}
+
+\item{n}{sample size}
+}
+\value{
+list with X and Y
+}
+\description{
+Generate a sample of (X,Y) of size n
+}
+
diff --git a/man/generateIOdefault.Rd b/man/generateIOdefault.Rd
new file mode 100644
index 0000000..332968e
--- /dev/null
+++ b/man/generateIOdefault.Rd
@@ -0,0 +1,24 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/generateIOdefault.R
+\name{generateIOdefault}
+\alias{generateIOdefault}
+\title{Generate a sample of (X,Y) of size n with default values}
+\usage{
+generateIOdefault(n, p, m, k)
+}
+\arguments{
+\item{n}{sample size}
+
+\item{p}{number of covariates}
+
+\item{m}{size of the response}
+
+\item{k}{number of clusters}
+}
+\value{
+list with X and Y
+}
+\description{
+Generate a sample of (X,Y) of size n with default values
+}
+
diff --git a/man/gridLambda.Rd b/man/gridLambda.Rd
new file mode 100644
index 0000000..551c3d7
--- /dev/null
+++ b/man/gridLambda.Rd
@@ -0,0 +1,30 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/gridLambda.R
+\name{gridLambda}
+\alias{gridLambda}
+\title{Construct the data-driven grid for the regularization parameters used for the Lasso estimator}
+\usage{
+gridLambda(phiInit, rhoInit, piInit, gamInit, X, Y, gamma, mini, maxi, tau)
+}
+\arguments{
+\item{phiInit}{value for phi}
+
+\item{piInit}{value for pi}
+
+\item{gamInit}{value for gamma}
+
+\item{mini}{minimum number of iterations in EM algorithm}
+
+\item{maxi}{maximum number of iterations in EM algorithm}
+
+\item{tau}{threshold to stop EM algorithm}
+
+\item{rhoInt}{value for rho}
+}
+\value{
+the grid of regularization parameters
+}
+\description{
+Construct the data-driven grid for the regularization parameters used for the Lasso estimator
+}
+
diff --git a/man/indicesSelection.Rd b/man/indicesSelection.Rd
new file mode 100644
index 0000000..21d8e2d
--- /dev/null
+++ b/man/indicesSelection.Rd
@@ -0,0 +1,21 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/indicesSelection.R
+\name{indicesSelection}
+\alias{indicesSelection}
+\title{Construct the set of relevant indices}
+\usage{
+indicesSelection(phi, thresh = 1e-06)
+}
+\arguments{
+\item{phi}{regression matrix, of size p*m}
+
+\item{thresh}{threshold to say a cofficient is equal to zero}
+}
+\value{
+a list with A, a matrix with relevant indices (size = p*m) and B, a 
+         matrix with irrelevant indices (size = p*m)
+}
+\description{
+Construct the set of relevant indices
+}
+
diff --git a/man/initSmallEM.Rd b/man/initSmallEM.Rd
new file mode 100644
index 0000000..1b5db3f
--- /dev/null
+++ b/man/initSmallEM.Rd
@@ -0,0 +1,24 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/initSmallEM.R
+\name{initSmallEM}
+\alias{initSmallEM}
+\title{initialization of the EM algorithm}
+\usage{
+initSmallEM(k, X, Y, tau)
+}
+\arguments{
+\item{k}{number of components}
+
+\item{X}{matrix of covariates (of size n*p)}
+
+\item{Y}{matrix of responses (of size n*m)}
+
+\item{tau}{threshold to stop EM algorithm}
+}
+\value{
+a list with phiInit, rhoInit, piInit, gamInit
+}
+\description{
+initialization of the EM algorithm
+}
+
diff --git a/man/modelSelection.Rd b/man/modelSelection.Rd
new file mode 100644
index 0000000..c65b678
--- /dev/null
+++ b/man/modelSelection.Rd
@@ -0,0 +1,24 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/modelSelection.R
+\name{modelSelection}
+\alias{modelSelection}
+\title{Among a collection of models, this function constructs a subcollection of models with
+models having strictly different dimensions, keeping the model which minimizes 
+the likelihood if there were several with the same dimension}
+\usage{
+modelSelection(LLF)
+}
+\arguments{
+\item{LLF}{a matrix, the first column corresponds to likelihoods for several models
+the second column corresponds to the dimensions of the corresponding models.}
+}
+\value{
+a list with indices, a vector of indices selected models, 
+        and D1, a vector of corresponding dimensions
+}
+\description{
+Among a collection of models, this function constructs a subcollection of models with
+models having strictly different dimensions, keeping the model which minimizes 
+the likelihood if there were several with the same dimension
+}
+
diff --git a/man/vec_bin.Rd b/man/vec_bin.Rd
new file mode 100644
index 0000000..1689488
--- /dev/null
+++ b/man/vec_bin.Rd
@@ -0,0 +1,20 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/vec_bin.R
+\name{vec_bin}
+\alias{vec_bin}
+\title{A function needed in initSmallEM}
+\usage{
+vec_bin(X, r)
+}
+\arguments{
+\item{X}{vector with integer values}
+
+\item{r}{integer}
+}
+\value{
+a list with Z (a binary vector of size the size of X) and indices where Z is equal to 1
+}
+\description{
+A function needed in initSmallEM
+}
+
-- 
2.44.0