corr_complex {cmvnorm} | R 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 |
distance.function |
Function giving the (complex) covariance
between two points in |
means , pos.def.matrix , scales |
In function |
zold , d , give_log , func , x , Ainv , give.Z , ... |
Direct analogues of the
arguments in |
Details
Function
complex_CF()
returns a (slightly reparameterized) characteristic function of a complex Gaussian distribution. The covariance is given byc(\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), andB
a positive-definite matrix.Function
corr_complex()
is the complex analogue ofcorr.matrix()
. It returns a matrix with entry(i,j)
equal to the covariance of the process at observationi
and observationj
, or\mbox{cov}(\eta(\mathbf{x}_i),\eta(\mathbf{x}_j))
. The elements are calculated bycomplex_CF()
.This function includes only a single method, that of nested calls to
apply()
. I could not figure out how to generalize method 1 ofcorr.matrix()
to the complex case.Function
scales.likelihood.complex()
is a complex version ofscales.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 ofinterpolant.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)