| Type: | Package | 
| Title: | Estimation of Low Rank Plus Sparse Structured Vector Auto-Regressive (VAR) Model | 
| Version: | 1.2 | 
| Author: | Peiliang Bai [aut, cre] | 
| Maintainer: | Peiliang Bai <baipl92@ufl.edu> | 
| Description: | Implementations of estimation algorithm of low rank plus sparse structured VAR model by using Fast Iterative Shrinkage-Thresholding Algorithm (FISTA). It relates to the algorithm in Sumanta, Li, and Michailidis (2019) <doi:10.1109/TSP.2018.2887401>. | 
| License: | GPL-2 | 
| Encoding: | UTF-8 | 
| Imports: | igraph, mvtnorm, pracma | 
| Suggests: | rmarkdown, knitr | 
| VignetteBuilder: | knitr | 
| RoxygenNote: | 7.1.1 | 
| NeedsCompilation: | no | 
| Packaged: | 2021-05-25 15:55:28 UTC; baipl | 
| Repository: | CRAN | 
| Date/Publication: | 2021-05-26 12:00:02 UTC | 
An auxiliary function in FISTA algorithm
Description
Auxiliary function for FISTA implementation
Usage
Q.func(x, y, A, b, L, AtA, Atb)
Arguments
| x | Model parameter for previous update | 
| y | Model parameter for updating | 
| A | An n by p design matrix | 
| b | A correspond vector, or matrix with size of n by 1 or n by p | 
| L | Learning rate | 
| AtA | Gram matrix for design matrix A | 
| Atb | Inner product for design matrix A and correspond vector b | 
Value
Value of function Q
Main loss function for quardratic loss
Description
Main loss function
Usage
f.func(x, A, b)
Arguments
| x | Model parameters | 
| A | Design matrix with size of n by p | 
| b | Correspond vector or matrix | 
Value
Value of objective function
A function to solve low rank plus sparse model estimation using FISTA algorithm
Description
A function to solve low rank plus sparse model estimation
Usage
fista.LpS(
  data,
  lambda,
  mu,
  alpha_L = 0.25,
  niter = 100,
  backtracking = TRUE,
  x.true = NULL
)
Arguments
| data | A numeric dataset with size of n by p | 
| lambda | A positive numeric value, indicating the tuning parameter for sparse component | 
| mu | A positive numeric value, indicating the tuning parameter for low rank component | 
| alpha_L | The constraint coefficient of low rank component, default is 0.25 | 
| niter | The maximum number of iterations required for FISTA | 
| backtracking | A boolean argument, indicating that use backtracking in the FISTA | 
| x.true | A p by p matrix, the true model parameter. Only available for simulation. | 
Value
A S3 object of class LSVAR, including
- est_phi
- estimated model parameter 
- sparse.comp
- Estimated sparse component 
- lr.comp
- Estimated low-rank component 
- obj.val
- Values of objective function 
- rel.err
- Relative errors compared with the true model parameters if available 
Examples
n <- 300
p <- 20
try <- testVAR(n, p, struct = "LS", signal = 0.75, rank = 2,
               singular_vals = c(1, 0.8))
data <- as.matrix(try$series)
lambda <- 0.1; mu <- 1
fit <- fista.LpS(data, lambda = lambda, mu = mu, x.true = try$model_param)
summary(fit, threshold = 0.2)
Gradient function of quardratic loss
Description
Gradient function of quardratic loss
Usage
gradf.func(x, AtA, Atb)
Arguments
| x | A vector, or matrix, indicating the model parameter | 
| AtA | A p by p Gram matrix for corresponding design matrix A | 
| Atb | An inner product for design matrix A and corresponding matrix (vector) b | 
Value
Value of gradients
Nuclear norm penalty for low-rank component
Description
Nuclear norm penalty for low-rank component
Usage
nuclear.pen(x, lambda)
Arguments
| x | Model parameter | 
| lambda | Tuning parameter | 
Value
Value of nuclear norm penalty term
Objective function
Description
objective function, main loss function and penalties
Usage
obj.func(x.lr, x.sparse, A, b, lambda, mu)
Arguments
| x.lr | low-rank component | 
| x.sparse | sparse component | 
| A | design matrix | 
| b | correspond vector | 
| lambda | a tuning parameter for sparse component | 
| mu | a tuning parameter for low-rank component | 
Value
value of objective function
plot sparse component for use igraph and network layout
Description
Plot a network to illustrate the estimated sparse component
Usage
plot_network(mat, threshold = 0.1)
Arguments
| mat | a p by p matrix, indicating the sparse component | 
| threshold | the threshold for presenting the edges in the network | 
Value
A network plot for the sparse component
Examples
set.seed(1)
est_mats <- matrix(rnorm(400, 0, 1), 20, 20)
plot_network(est_mats, threshold = 0.1)
Proximal function with nuclear norm penalty updating
Description
Proximal function with nuclear norm
Usage
prox.nuclear.func(w1, y, A, b, L, lambda, AtA, Atb)
Arguments
| w1 | previously updated model parameter | 
| y | updated model parameter | 
| A | design matrix | 
| b | correspond vector, or matrix | 
| L | learning rate | 
| lambda | tuning parameter for low-rank component | 
| AtA | Gram matrix of design matrix A | 
| Atb | inner product of design matrix A and correspond vector b | 
Value
Value of proximal function with nuclear norm penalty
Proximal function with l1-norm penalty updating
Description
Proximal function with l1-norm
Usage
prox.sparse.func(w1, y, A, b, L, lambda, AtA, Atb)
Arguments
| w1 | previously updated model parameter | 
| y | updated model parameter | 
| A | design matrix | 
| b | correspond vector, or matrix | 
| L | learning rate | 
| lambda | tuning parameter for sparse component | 
| AtA | Gram matrix of design matrix A | 
| Atb | inner product of design matrix A and correspond vector b | 
Value
Value of proximal function with l1-norm penalty
Shrinkage function for sparse soft-thresholding
Description
Shrinkage function for sparse soft-thresholding
Usage
shrinkage(y, tau)
Arguments
| y | A matrix, or a vector for thresholding | 
| tau | A positive number, threshold | 
Value
A thresholded matrix, or vector
Shrinkage function for low-rank soft-thresholding
Description
Shrinkage function for low-rank soft-thresholding
Usage
shrinkage.lr(y, tau)
Arguments
| y | A matrix, or a vector for thresholding | 
| tau | A positive number, threshold | 
Value
A thresholded matrix, or vector
L1-norm penalty for sparse component
Description
L1-norm penalty for sparse component
Usage
sparse.pen(x, lambda)
Arguments
| x | Model parameter | 
| lambda | Tuning parameter | 
Value
Value of l1-norm penalty term
Summary of LSVAR S3 class
Description
summary function for S3 class for the fitting result
Usage
## S3 method for class 'LSVAR'
summary(object, threshold = 0.2, ...)
Arguments
| object | the S3 class object of  | 
| threshold | the threshold for sparse component visualization | 
| ... | not in use | 
Value
A series of summary for the S3 result
Examples
n <- 300
p <- 20
try <- testVAR(n, p, struct = "LS", signal = 0.75, rank = 2,
               singular_vals = c(1, 0.8))
data <- as.matrix(try$series)
lambda <- 0.1; mu <- 1
fit <- fista.LpS(data, lambda = lambda, mu = mu, x.true = try$model_param)
summary(fit, threshold = 0.2)
Function to generate a VAR process
Description
A function to generate synthetic time series process based on the given structure
Usage
testVAR(
  n,
  p,
  struct = c("sparse", "low rank", "LS")[1],
  sp_density = 0.1,
  signal = NULL,
  rank = NULL,
  singular_vals,
  spectral_radius = 0.9,
  sigma = NULL,
  skip = 50,
  seed = 1
)
Arguments
| n | the length of time series | 
| p | the number of multivariate time series | 
| struct | a character string indicating the structure of the transition matrix, here are three options: sparse, low rank and LS (low rank plus sparse) | 
| sp_density | a numeric value, indicating the sparsity density of sparse components, default is 0.1 | 
| signal | a numeric value, indicating the magnitude of transition matrix | 
| rank | a positive integer, the rank for low rank component | 
| singular_vals | a numeric vector, indicating the singular values for the low rank component, the length of singular value must equal to the rank | 
| spectral_radius | a numeric value, controlling the stability of the process, default is 0.9 | 
| sigma | a numeric matrix, indicating the covariance matrix of noise term | 
| skip | a numeric value, indicating the number of skipped time points in the beginning of the process | 
| seed | an integer, indicating the seed for random seed. | 
Value
A list object, including
- series
- the generated time series 
- noise
- the noise term 
- model_param
- true transition matrix 
Examples
n <- 300; p <- 15
signal <- 0.75
rank <- 3
singular_vals <- c(1, 0.75, 0.5)
try <- testVAR(n, p, struct = "LS", signal = signal, rank = rank,
               singular_vals = singular_vals)
data <- as.matrix(try$series)