| Type: | Package | 
| Title: | Fast Estimation of a Covariance Matrix by Banding the Cholesky Factor | 
| Version: | 0.1.1 | 
| Author: | Aaron Molstad <molst029@umn.edu> | 
| Maintainer: | Aaron Molstad <molst029@umn.edu> | 
| Description: | Fast and numerically stable estimation of a covariance matrix by banding the Cholesky factor using a modified Gram-Schmidt algorithm implemented in RcppArmadilo. See http://stat.umn.edu/~molst029 for details on the algorithm. | 
| License: | GPL-2 | 
| LazyData: | TRUE | 
| Imports: | Rcpp | 
| LinkingTo: | Rcpp, RcppArmadillo | 
| NeedsCompilation: | yes | 
| Packaged: | 2015-08-26 14:08:04 UTC; aaron | 
| Repository: | CRAN | 
| Date/Publication: | 2015-08-26 16:44:04 | 
Fast estimation of covariance matrix by banded Cholesky factor
Description
Fast and numerically stable estimation of covariance matrix by banding the Cholesky factor using a modified Gram-Schmidt algorithm implemented in RcppArmadilo. See <https://stat.umn.edu/~molst029> for details on the algorithm.
Details
| Package: | FastBandChol | 
| Type: | Package | 
| Version: | 0.1.0 | 
| Date: | 2015-08-22 | 
| License: | GPL-2 | 
Author(s)
Aaron Molstad
References
Rothman, A.J., Levina, E., and Zhu, J. (2010). A new approach to Cholesky-based covariance regularization in high dimensions. Biometrika, 97(3):539-550.
Examples
## set sample size and dimension
n = 20
p = 100
## create covariance with AR1 structure
Sigma = matrix(0, nrow=p, ncol=p)
for(l in 1:p){
  for(m in 1:p){
    Sigma[l,m] = .5^(abs(l-m))
  }
}
## simulation Normal data
eo1 = eigen(Sigma)
Sigma.sqrt = eo1$vec%*%diag(eo1$val^.5)%*%t(eo1$vec)
X = t(Sigma.sqrt%*%matrix(rnorm(n*p), nrow=p, ncol=n))
## compute estimates
est.sample = banded.sample(X, bandwidth=4)$est
est.chol = banded.chol(X, bandwidth=4)$est
Computes estimate of covariance matrix by banding the Cholesky factor
Description
Computes estimate of covariance matrix by banding the Cholesky factor using a modified Gram Schmidt algorithm implemented in RcppArmadillo.
Usage
banded.chol(X, bandwidth, centered = FALSE)
Arguments
| X | A data matrix with  | 
| bandwidth | A positive integer. Must be less than  | 
| centered | Logical. Is data matrix centered? Default is  | 
Value
A list with
| est | The estimated covariance matrix. | 
Examples
## set sample size and dimension
n=20
p=100
## create covariance with AR1 structure
Sigma = matrix(0, nrow=p, ncol=p)
for(l in 1:p){
  for(m in 1:p){
    Sigma[l,m] = .5^(abs(l-m))
  }
}
## simulation Normal data
eo1 = eigen(Sigma)
Sigma.sqrt = eo1$vec%*%diag(eo1$val^.5)%*%t(eo1$vec)
X = t(Sigma.sqrt%*%matrix(rnorm(n*p), nrow=p, ncol=n))
## compute estimate
out1 = banded.chol(X, bandwidth=4)
Selects bandwidth for Cholesky factorization by cross validation
Description
Selects bandwidth for Cholesky factorization by k-fold cross validation
Usage
banded.chol.cv(X, bandwidth, folds = 3, est.eval = TRUE, Frob = TRUE)
Arguments
| X | A data matrix with  | 
| bandwidth | A vector of candidate bandwidths. Candidate bandwidths can only positive integers such that the maximum is less than the sample size outside of the  | 
| folds | The number of folds used for cross validation. Default is  | 
| est.eval | Logical:  | 
| Frob | Logical:  | 
Value
a list with
| bandwidth.min | The bandwidth minimizing cross-validation error. | 
| est | The estimated covariance matrix computed with  | 
Examples
## set sample size and dimension
n=20
p=100
## create covariance with AR1 structure
Sigma = matrix(0, nrow=p, ncol=p)
for(l in 1:p){
  for(m in 1:p){
    Sigma[l,m] = .5^(abs(l-m))
  }
}
## simulation Normal data
eo1 = eigen(Sigma)
Sigma.sqrt = eo1$vec%*%diag(eo1$val^.5)%*%t(eo1$vec)
X = t(Sigma.sqrt%*%matrix(rnorm(n*p), nrow=p, ncol=n))
## perform cross validation
k = 4:7
out1.cv = banded.chol.cv(X, bandwidth=k, folds = 5)
Computes banded sample covariance matrix
Description
Estimates a covariance matrix by banding the sample covariance matrix
Usage
banded.sample(X, bandwidth, centered = FALSE)
Arguments
| X | A data matrix with  | 
| bandwidth | A positive integer. Must be less than  | 
.
| centered | Logical. Is data matrix centered? Default is  | 
Value
A list with
| est | The estimated covariance matrix. | 
Examples
## set sample size and dimension
n=20
p=100
## create covariance with AR1 structure
Sigma = matrix(0, nrow=p, ncol=p)
for(l in 1:p){
  for(m in 1:p){
    Sigma[l,m] = .5^(abs(l-m))
  }
}
## simulation Normal data
eo1 = eigen(Sigma)
Sigma.sqrt = eo1$vec%*%diag(eo1$val^.5)%*%t(eo1$vec)
X = t(Sigma.sqrt%*%matrix(rnorm(n*p), nrow=p, ncol=n))
## compute estimate
out2 = banded.sample(X, bandwidth=4)
Selects bandwidth for sample covariance matrix by cross validation
Description
Selects bandwidth for sample covariance matrix by k-fold cross validation
Usage
banded.sample.cv(X, bandwidth, folds = 3, est.eval = TRUE, Frob = TRUE)
Arguments
| X | A data matrix with  | 
| bandwidth | A vector of candidate bandwidths. Candidate bandwidths can only positive integers such that the maximum is less than  | 
.
| folds | The number of folds used for cross validation. Default is  | 
| est.eval | Logical:  | 
| Frob | Logical:  | 
Value
A list with
| bandwidth.min | the bandwidth minimizing cv error | 
| est | the sample covariance matrix at bandwidth.min | 
Examples
## set sample size and dimension
n=20
p=100
## create covariance with AR1 structure
Sigma = matrix(0, nrow=p, ncol=p)
for(l in 1:p){
  for(m in 1:p){
    Sigma[l,m] = .5^(abs(l-m))
  }
}
## simulation Normal data
eo1 = eigen(Sigma)
Sigma.sqrt = eo1$vec%*%diag(eo1$val^.5)%*%t(eo1$vec)
X = t(Sigma.sqrt%*%matrix(rnorm(n*p), nrow=p, ncol=n))
## perform cross validation
k = 4:7
out2.cv = banded.sample.cv(X, bandwidth=k, folds=5)