X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=pkg%2FR%2FgridLambda.R;fp=pkg%2FR%2FgridLambda.R;h=35c412a8282068722fde6255cd4180a4b4ddfc24;hb=f87ff0f5116c0c1c59c5608e46563ff0f79e5d43;hp=0000000000000000000000000000000000000000;hpb=53fa233d8fbeaf4d51a4874ba69d8472d01d04ba;p=valse.git diff --git a/pkg/R/gridLambda.R b/pkg/R/gridLambda.R new file mode 100644 index 0000000..35c412a --- /dev/null +++ b/pkg/R/gridLambda.R @@ -0,0 +1,34 @@ +#' Construct the data-driven grid for the regularization parameters used for the Lasso estimator +#' @param phiInit value for phi +#' @param rhoInit value for rho +#' @param piInit value for pi +#' @param gamInit value for gamma +#' @param X matrix of covariates (of size n*p) +#' @param Y matrix of responses (of size n*m) +#' @param gamma power of weights in the penalty +#' @param mini minimum number of iterations in EM algorithm +#' @param maxi maximum number of iterations in EM algorithm +#' @param tau threshold to stop EM algorithm +#' @return the grid of regularization parameters +#' @export +#----------------------------------------------------------------------- +gridLambda = function(phiInit, rhoInit, piInit, gamInit, X, Y, gamma, mini, maxi, tau) +{ + n = nrow(X) + p = dim(phiInit)[1] + m = dim(phiInit)[2] + k = dim(phiInit)[3] + + #list_EMG = .Call("EMGLLF_core",phiInit,rhoInit,piInit,gamInit,mini,maxi,1,0,X,Y,tau) + list_EMG = EMGLLF(phiInit,rhoInit,piInit,gamInit,mini,maxi,1,0,X,Y,tau) + grid = array(0, dim=c(p,m,k)) + for (i in 1:p) + { + for (j in 1:m) + grid[i,j,] = abs(list_EMG$S[i,j,]) / (n*list_EMG$pi^gamma) + } + grid = unique(grid) + grid = grid[grid <=1] + + return(grid) +}