corr_complex: Complex Gaussian processes

corr_complexR Documentation

Complex Gaussian processes

Description

Various utilities for investigating complex Gaussian processes

Usage

corr_complex(z1, z2 = NULL, distance.function = complex_CF, means =
NULL, scales = NULL, pos.def.matrix = NULL)
complex_CF(z1,z2, means, pos.def.matrix)
scales.likelihood.complex(pos.def.matrix, scales, means,  zold, z,
               give_log = TRUE, func = regressor.basis)
interpolant.quick.complex(x, d, zold, Ainv, scales = NULL, pos.def.matrix = NULL,
               means=NULL, func = regressor.basis, give.Z = FALSE,
               distance.function = corr_complex, ...)

Arguments

z, z1, z2

Points in C^n

distance.function

Function giving the (complex) covariance between two points in C^n

means, pos.def.matrix, scales

In function complex_CF(), the mean and covariance matrix of the distribution whose characteristic function is used to give the covariance matrix; scales is used to specify the diagonal of pos.def.matrix if the off-diagonal elements are zero

zold, d, give_log, func, x, Ainv, give.Z, ...

Direct analogues of the arguments in interpolant() and scales.likelihood() in the emulator package

Details

  • Function complex_CF() returns a (slightly reparameterized) characteristic function of a complex Gaussian distribution. The covariance is given by

    c(\mathbf{t}) = \exp(i\mathrm{Re}(\mathbf{t}^\ast\mathbf{\mu}) - \mathbf{t}^\ast B\mathbf{t})

    where \mathbf{t}=\mathbf{x}-\mathbf{x}' is interpreted as the distance between two observations, \mathbf{\mu} is the mean of the distribution (which is in general a complex vector), and B a positive-definite matrix.

  • Function corr_complex() is the complex analogue of corr.matrix(). It returns a matrix with entry (i,j) equal to the covariance of the process at observation i and observation j, or \mbox{cov}(\eta(\mathbf{x}_i),\eta(\mathbf{x}_j)). The elements are calculated by complex_CF().

    This function includes only a single method, that of nested calls to apply(). I could not figure out how to generalize method 1 of corr.matrix() to the complex case.

  • Function scales.likelihood.complex() is a complex version of scales.likelihood() which takes a positive definite matrix and a mean. The formula used is

    (\sigma^2)^{-(n-q)}|A|^{-1} |H^\ast A^{-1}H|^{-1}

    . Here and elsewhere, A^\ast means the complex conjugate of the transpose.

  • Function interpolant.quick.complex() is a complex version of interpolant.quick().

    \mathbf{h}(\mathbf{x})^\ast\hat{\mathbf{\beta}} + \mathbf{t}(\mathbf{x})^\ast A^{-1}(\mathbf{y}-H\hat{\mathbf{\beta}})

    This is the complex version of Oakley's equation 2.30 or Hankin's equation 5.

More details are given in the package vignette.

Author(s)

Robin K. S. Hankin

References

  • Hankin, R. K. S. 2005. “Introducing BACCO, an R bundle for Bayesian Analysis of Computer Code Output”, Journal of Statistical Software, 14(15)

  • J. Oakley 1999. Bayesian uncertainty analysis for complex computer codes, PhD thesis, University of Sheffield.

Examples



complex_CF(c(1,1i),c(1,-1i),means=c(1i,1i),pos.def.matrix=diag(2))

V <- latin.hypercube(7,2,complex=TRUE)

cm <- c(1,1+1i)                     # "complex mean"
cs <- matrix(c(2,1i,-1i,1),2,2)   # "complex scales"
tb <- c(1,1i,1-1i)                     # "true beta"

A <- corr_complex(V,means=cm,pos.def.matrix=cs)
Ainv <- solve(A)
z <- drop(rcmvnorm(n=1,mean=regressor.multi(V) %*% tb, sigma=A))


betahat.fun(V,Ainv,z)    # should be close to 'tb'

#scales.likelihood.complex(cs,cm,V,z)   # log-likelihood evaluated true parameters



interpolant.quick.complex(x=0.1i+V[1:3,],d=z,zold=V,Ainv=Ainv,pos.def.matrix=cs,means=cm)



RobinHankin/cmvnorm documentation built on June 9, 2025, 12:47 p.m.