Rybicki Press algorithm

The Rybicki–Press algorithm is a fast algorithm for inverting a matrix whose entries are given by $$A(i,j) = \exp(-a \vert t_i - t_j \vert)$$, where $$a \in \mathbb{R}$$ and where the $$t_i$$ are sorted in order. The key observation behind the Rybicki-Press observation is that the matrix inverse of such a matrix is always a tridiagonal matrix (a matrix with nonzero entries only on the main diagonal and the two adjoining ones), and tridiagonal systems of equations can be solved efficiently (to be more precise, in linear time). It is a computational optimization of a general set of statistical methods developed to determine whether two noisy, irregularly sampled data sets are, in fact, dimensionally shifted representations of the same underlying function. The most common use of the algorithm is in the detection of periodicity in astronomical observations, such as for detecting quasars.

The method has been extended to the Generalized Rybicki-Press algorithm for inverting matrices with entries of the form $$A(i,j) = \sum_{k=1}^p a_k \exp(-\beta_k \vert t_i - t_j \vert)$$. The key observation in the Generalized Rybicki-Press (GRP) algorithm is that the matrix $$A$$ is a semi-separable matrix with rank $$p$$ (that is, a matrix whose upper half, not including the main diagonal, is that of some matrix with matrix rank $$p$$ and whose lower half is also that of some possibly different rank $$p$$ matrix ) and so can be embedded into a larger band matrix (see figure on the right), whose sparsity structure can be leveraged to reduce the computational complexity. As the matrix $$A \in \mathbb{R}^{n\times n}$$ has a semi-separable rank of $$p$$, the computational complexity of solving the linear system $$Ax=b$$ or of calculating the determinant of the matrix $$A$$ scales as $$\mathcal{O}\left(p^2n \right)$$, thereby making it attractive for large matrices.

The fact that matrix $$A$$ is a semi-separable matrix also forms the basis for library, which is a library for fast and scalable Gaussian process regression in one dimension with implementations in C++, Python, and Julia. The method also provides an algorithm for generating samples from a high-dimensional distribution. The method has found attractive applications in a wide range of fields, especially in astronomical data analysis.