X-Git-Url: https://git.auder.net/?p=valse.git;a=blobdiff_plain;f=pkg%2FR%2FfilterModels.R;fp=pkg%2FR%2FfilterModels.R;h=2659ed468a8450f5d84e8d75280148acdb5da29a;hp=0000000000000000000000000000000000000000;hb=0eb161e3f3d018bce7d98fc85622d14910f89d43;hpb=2279a641f2bee1db586e7ab1e13726d111d5daaf diff --git a/pkg/R/filterModels.R b/pkg/R/filterModels.R new file mode 100644 index 0000000..2659ed4 --- /dev/null +++ b/pkg/R/filterModels.R @@ -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)) +}