cxreg is an R package, available on CRAN, that provides efficient
estimation and inference procedures for complex-valued regression and
spectral precision matrix problems.
The estimation algorithms and their implementation in cxreg are described in Kim, Deb, and Basu (2026), with the underlying methodology developed in Deb, Kuceyeski, and Basu (2024). The spectral inference procedures are developed in Deb, Kim, and Basu (2026).
Before installing via devtools, ensure you have the correct version of
Rtools installed. Rtools is required to compile C/C++/Fortran code in R
packages on Windows.
Install GCC (which includes gfortran) via Homebrew:
brew install gcc
Check whether ~/.R exists:
ls -ld ~/.R
If not, create it and open ~/.R/Makevars:
mkdir ~/.R
vim ~/.R/Makevars
Add the following lines, replacing 15.0.1 with the version returned by
gfortran --version:
FC = /opt/homebrew/Cellar/gcc/15.0.1/bin/gfortran
F77 = /opt/homebrew/Cellar/gcc/15.0.1/bin/gfortran
FLIBS = -L/opt/homebrew/Cellar/gcc/15.0.1/lib/gcc/15
# install.packages("devtools")
# devtools::install_github("yk748/cxreg")
install.packages("cxreg", repos = c('https://yk748.r-universe.dev', 'https://cloud.r-project.org'))
library(cxreg)
data(classo_example)
x <- classo_example$x # complex matrix, 1000 x 200
y <- classo_example$y # complex vector, length 1000
# Fit lasso path
fit <- classo(x, y)
print(fit)
plot(fit, xvar = "lambda")
# Cross-validation
cvfit <- cv.classo(x, y, trace.it = 1)
print(cvfit)
plot(cvfit)
# Coefficients and predictions at optimal lambda
coef(cvfit, s = "lambda.min")
predict(cvfit, newx = x[1:5, ], s = "lambda.min")
data(cglasso_example)
f_hat <- cglasso_example$f_hat # p x p complex spectral density matrix
m <- cglasso_example$m # half-bandwidth
fit <- cglasso(S = f_hat, m = m, type = "I")
print(fit)
plot(fit, index = fit$min_index, type = "mod")
library(mvtnorm)
set.seed(42)
p <- 10; n <- 200
X <- rmvnorm(n, mean = rep(0, p), sigma = diag(p))
# 1. Data-driven bandwidth selection
bw_sel <- select_m(X)
m <- bw_sel$m_opt
# 2. Smoothed periodogram and cglasso fit
j <- floor(n / 4)
dft <- dft.all(X)
fhat <- fhat_at(dft, j, m)
fit <- cglasso(S = fhat, m = m)
# 3. One-step debiasing
res <- decglasso(object = fit, fhat = fhat)
# 4. Asymptotic variance estimation
vc <- var.cov(Theta = res$Theta_tilde, X = X, j = j, m = m,
type = "plug-in")
# 5. Entry-wise test statistics and confidence regions (H0: Theta = 0)
st <- spec.test(Est = res$Theta_tilde, varcov = vc, m = m, alpha = 0.05)
# 6. FDR-controlled support recovery
fdr <- spec.fdr(Chi_sq = st$Chi_sq, alpha = 0.05, diag = FALSE)
fdr$tau
fdr$Decision
| Category | Function | Description |
|---|---|---|
| Regression | classo() |
Fit complex lasso path |
| Regression | cv.classo() |
k-fold cross-validation for classo |
| Regression | coef.classo() |
Extract coefficients |
| Regression | predict.classo() |
Predict fitted values or coefficients |
| Regression | print.classo() |
Print coefficient path summary |
| Regression | plot.classo() |
Plot coefficient paths (Re and Im panels) |
| Graphical lasso | cglasso() |
Fit complex graphical lasso path |
| Graphical lasso | plot.cglasso() |
Heatmap of estimated precision matrix |
| Spectral utilities | dft.all() |
Full normalised DFT of a time series matrix |
| Spectral utilities | dft.j() |
DFT windowed around a single frequency |
| Spectral utilities | fhat_at() |
Smoothed periodogram at a frequency index |
| Bandwidth selection | select_m() |
GCV-based half-bandwidth selection |
| Inference | decglasso() |
One-step debiased spectral precision estimator |
| Inference | var.cov() |
Plug-in or HAC variance/pseudovariance estimation |
| Inference | spec.test() |
Z-statistics, chi-squared statistics, CI half-widths |
| Inference | spec.fdr() |
FDR-controlled multiple testing |
cv.classo() supports parallel fold fitting via the parallel = TRUE
argument. Register a backend before calling:
library(doParallel)
registerDoParallel(cores = 4)
cvfit <- cv.classo(x, y, parallel = TRUE)
Any foreach-compatible backend (doMC, doFuture, etc.) is supported.
| Version | Date | Notes |
|---|---|---|
| 1.1.4 | 2026-07-09 | Added the inference vignette covering the full spectral inference pipeline |
| 1.1.2 | 2026-06-27 | Fixed vignette API calls and compilation issues |
| 1.1.1 | 2026-06-26 | Reduced vignette PDF size for CRAN compatibility |
| 1.1.0 | 2026-06-01 | Added spectral inference pipeline: select_m, decglasso, var.cov, spec.test, spec.fdr
|
| 1.0.0 | 2025-07-01 | Initial release: CLASSO, CGLASSO, cross-validation, plotting |
If you encounter a bug or have a feature request, please open an issue at https://github.com/yk748/cxreg/issues or email Younghoon Kim at ykim124@ua.edu.
Please include:
sessionInfo())Younghoon Kim, Navonil Deb, and Sumanta Basu. 2026. "cxreg: An R Package for Complex-Valued Lasso and Graphical Lasso." Journal of Open Source Software 11(124): 9698. https://doi.org/10.21105/joss.09698.
Navonil Deb, Amy Kuceyeski, and Sumanta Basu. 2024. "Regularized Estimation of Sparse Spectral Precision Matrices." arXiv preprint arXiv:2401.11128. https://arxiv.org/abs/2401.11128.
Navonil Deb, Younghoon Kim, and Sumanta Basu. 2026. "Inference for High-Dimensional Sparse Spectral Precision Matrices." arXiv preprint arXiv:2606.07986. https://arxiv.org/abs/2606.07986.
Jerome Friedman, Trevor Hastie, Holger Hofling, and Robert Tibshirani. 2007. "Pathwise Coordinate Optimization." The Annals of Applied Statistics 1(2): 302–332. https://doi.org/10.1214/07-AOAS131
Jerome Friedman, Trevor Hastie, and Robert Tibshirani. 2008. "Sparse Inverse Covariance Estimation with the Graphical Lasso." Biostatistics 9(3): 432–441. https://doi.org/10.1093/biostatistics/kxm045
Jerome Friedman, Trevor Hastie, and Robert Tibshirani. 2010. "Regularization Paths for Generalized Linear Models via Coordinate Descent." Journal of Statistical Software 33(1): 1–22. https://doi.org/10.18637/jss.v033.i01