varband {varband} | R Documentation |
Compute the varband estimate for a fixed tuning parameter value with different penalty options.
Description
Solves the main optimization problem in Yu & Bien (2016):
min_L -2 \sum_{r=1}^p L_{rr} + tr(SLL^T) + lam * \sum_{r=2}^p P_r(L_{r.})
where
P_r(L_{r.}) = \sum_{\ell = 2}^{r-1} \left(\sum_{m=1}^\ell w_{\ell m}^2 L_{rm}^2\right)^{1/2}
or
P_r(L_{r.}) = \sum_{\ell = 1}^{r-1} |L_{r\ell}|
Usage
varband(S, lambda, init, w = FALSE, lasso = FALSE)
Arguments
S |
The sample covariance matrix |
lambda |
Non-negative tuning parameter. Controls sparsity level. |
init |
Initial estimate of L. Default is a closed-form diagonal estimate of L. |
w |
Logical. Should we use weighted version of the penalty or not? If |
lasso |
Logical. Should we use l1 penalty instead of hierarchical group lasso penalty? Note that by using l1 penalty, we lose the banded structure in the resulting estimate. Default is |
Details
The function decomposes into p independent row problems, each of which is solved by an ADMM algorithm. see paper for more explanation.
Value
Returns the variable banding estimate of L, where L^TL = Omega.
See Also
Examples
set.seed(123)
n <- 50
true <- varband_gen(p = 50, block = 5)
x <- sample_gen(L = true, n = n)
S <- crossprod(scale(x, center = TRUE, scale = FALSE)) / n
init <- diag(1/sqrt(diag(S)))
# unweighted estimate
L_unweighted <- varband(S, lambda = 0.1, init, w = FALSE)
# weighted estimate
L_weighted <- varband(S, lambda = 0.1, init, w = TRUE)
# lasso estimate
L_lasso <- varband(S, lambda = 0.1, init, w = TRUE, lasso = TRUE)