cmvnorm (version 1.0-6)

corr_complex: 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 as 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.

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

Run this code
# NOT RUN {

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)


# }

Run the code above in your browser using DataLab