fix memory leaks on EMGLLF, test OK for EMGrank
[valse.git] / R / modelSelection.R
... / ...
CommitLineData
1#' Among a collection of models, this function constructs a subcollection of models with
2#' models having strictly different dimensions, keeping the model which minimizes
3#' the likelihood if there were several with the same dimension
4#'
5#' @param LLF a matrix, the first column corresponds to likelihoods for several models
6#' the second column corresponds to the dimensions of the corresponding models.
7#'
8#' @return a list with indices, a vector of indices selected models,
9#' and D1, a vector of corresponding dimensions
10#' @export
11#'
12modelSelection = function(LLF)
13{
14 D = LLF[,2]
15 D1 = unique(D)
16
17 indices = rep(1, length(D1))
18 #select argmax MLE
19 if (length(D1)>2)
20 {
21 for (i in 1:length(D1))
22 {
23 A = c()
24 for (j in 1:length(D))
25 {
26 if(D[[j]]==D1[[i]])
27 a = c(a, LLF[j,1])
28 }
29 b = max(a)
30 #indices[i] : first indices of the binary vector where u_i ==1
31 indices[i] = which.max(LLF == b)
32 }
33 }
34
35 return (list(indices=indices,D1=D1))
36}