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 TRUE, we use general weight. If FALSE, use unweighted penalty. Default is FALSE.

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 FALSE.

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

varband_path varband_cv

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)

[Package varband version 0.9.0 Index]