--- /dev/null
+#' 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
+#'
+#' @param LLF a matrix, the first column corresponds to likelihoods for several models
+#' the second column corresponds to the dimensions of the corresponding models.
+#'
+#' @return a list with indices, a vector of indices selected models,
+#' and D1, a vector of corresponding dimensions
+#'
+#' @export
+filterModels = function(LLF)
+{
+ D = LLF[,2]
+ D1 = unique(D)
+
+ indices = rep(1, length(D1))
+ #select argmax MLE
+ if (length(D1)>2)
+ {
+ for (i in 1:length(D1))
+ {
+ A = c()
+ for (j in 1:length(D))
+ {
+ if(D[[j]]==D1[[i]])
+ a = c(a, LLF[j,1])
+ }
+ b = max(a)
+ #indices[i] : first indices of the binary vector where u_i ==1
+ indices[i] = which.max(LLF == b)
+ }
+ }
+
+ return (list(indices=indices,D1=D1))
+}