Generalized Fisher Transformation of Correlation Matrices

Forward and inverse generalized Fisher transformation (GFT) of correlation matrices, gamma = vecl(log C), which maps the positive definite correlation matrices one-to-one onto the Euclidean space of dimension n(n-1)/2, see Archakov and Hansen (2021) . The inverse is computed from a variational characterization by the GFT-FP+N algorithm: matrix-free inexact Newton steps for the log-diagonal residual, solved by preconditioned conjugate gradients, with fixed-point safeguards that guarantee global convergence. Sequential inversion with a tangent predictor, a certified quadrature preconditioner, and comparison solvers (the plain fixed point, Broyden's method, full Newton, Anderson acceleration, and limited-memory BFGS) are included. Uses base R only.


GFT (R package)

Forward and inverse generalized Fisher transformation (GFT) of correlation matrices in base R.

The GFT maps a non-singular n x n correlation matrix C to the unrestricted vector gamma = vecl(log C) in R^d, d = n(n-1)/2, and is a bijection onto R^d (Archakov and Hansen, 2021, Econometrica). The inverse is computed by GFT-FP+N (Archakov and Hansen, 2026, arXiv:2609.19028): matrix-free inexact Newton steps for the log-diagonal residual, solved by preconditioned conjugate gradients, with fixed-point safeguards that guarantee global convergence. Version 1.2.0 of the package matches release v1.2.0 of the Julia implementation.

library(GFT)
C <- 0.9^abs(outer(1:5, 1:5, "-"))
z <- gft(C)          # forward: correlation matrix -> R^10
r <- inv_gft(z)      # inverse: R^10 -> correlation matrix
max(abs(r$C - C))    # ~1e-15

Solvers: inv_gft (GFT-FP+N, recommended; with the optional certified quadrature preconditioner), inv_gft_path (sequential inversion with warm starts and the tangent predictor gft_predict), and the comparison solvers inv_gft_fp (fixed point), inv_gft_broyden (Chen, Fei and Yu, 2025), inv_gft_newton (full Newton), inv_gft_anderson (Anderson acceleration, plain or guarded), and inv_gft_lbfgs (limited-memory BFGS). All report eigendecomposition counts and convergence diagnostics.

Installation

# from CRAN (once accepted)
install.packages("GFT")

# development version
remotes::install_github("reinhardhansen/GFT", subdir = "r")

Correspondence with the Julia package

R/GFT.R is a line-faithful port of the Julia reference implementation (julia/src/GFT.jl, same repository). The test suite includes golden values generated by an independent NumPy implementation and shared with the Julia tests, so a passing run is a cross-language verification. dev/ contains a development harness (webR) and a script comparing solver iteration counts against the serialized draws used in the paper's supplement; it is excluded from the built package.

References

  • Archakov, I. and Hansen, P. R. (2021). A new parametrization of correlation matrices. Econometrica, 89(4), 1699-1715. doi:10.3982/ECTA16910
  • Archakov, I. and Hansen, P. R. (2026). A variational approach to the generalized Fisher transformation of correlation matrices. Working paper.
  • Chen, H., Fei, Y. and Yu, J. (2025). Multivariate stochastic volatility models based on generalized Fisher transformation. Journal of Econometrics, 251, 106041.

License

MIT. See LICENSE.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("GFT")

1.2.0 by Peter Reinhard Hansen, 14 days ago


https://github.com/reinhardhansen/GFT


Report a bug at https://github.com/reinhardhansen/GFT/issues


Browse source code at https://github.com/cran/GFT


Authors: Ilya Archakov [aut] , Peter Reinhard Hansen [aut, cre]


Documentation:   PDF Manual  


MIT + file LICENSE license


Suggests testthat, knitr, rmarkdown


See at CRAN