several modifs - pkg looks better (but untested)
[valse.git] / pkg / R / filterModels.R
diff --git a/pkg/R/filterModels.R b/pkg/R/filterModels.R
new file mode 100644 (file)
index 0000000..2659ed4
--- /dev/null
@@ -0,0 +1,36 @@
+#' 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))
+}