several modifs - pkg looks better (but untested)
[valse.git] / pkg / R / computeGridLambda.R
1 #' computeGridLambda
2 #'
3 #' Construct the data-driven grid for the regularization parameters used for the Lasso estimator
4 #'
5 #' @param phiInit value for phi
6 #' @param rhoInit value for rho
7 #' @param piInit value for pi
8 #' @param gamInit value for gamma
9 #' @param X matrix of covariates (of size n*p)
10 #' @param Y matrix of responses (of size n*m)
11 #' @param gamma power of weights in the penalty
12 #' @param mini minimum number of iterations in EM algorithm
13 #' @param maxi maximum number of iterations in EM algorithm
14 #' @param tau threshold to stop EM algorithm
15 #'
16 #' @return the grid of regularization parameters
17 #'
18 #' @export
19 computeGridLambda = function(phiInit, rhoInit, piInit, gamInit, X, Y,
20 gamma, mini, maxi, tau)
21 {
22 n = nrow(X)
23 p = dim(phiInit)[1]
24 m = dim(phiInit)[2]
25 k = dim(phiInit)[3]
26
27 # TODO: explain why gamma=1 instad of just 'gamma'?
28 list_EMG = EMGLLF(phiInit, rhoInit, piInit, gamInit, mini, maxi,
29 gamma=1, lamba=0, X, Y, tau)
30 grid = array(0, dim=c(p,m,k))
31 for (i in 1:p)
32 {
33 for (j in 1:m)
34 grid[i,j,] = abs(list_EMG$S[i,j,]) / (n*list_EMG$pi^gamma)
35 }
36 grid = unique(grid)
37 grid = grid[grid <= 1]
38 grid
39 }