Learn R Programming

BACCO (version 1.0-50)

corr: correlation function for calculating A

Description

calculates the correlation function between two points in parameter space, thus determining the correlation matrix A.

Usage

corr(x1, x2, scales=NULL , pos.def.matrix=NULL,
power=2,coords="cartesian", spherical.distance.function=NULL)
corr.matrix(xold, yold=NULL, method=1, distance.function=corr, ...)

Arguments

x1
First point
x2
Second point
scales
Vector specifying the diagonal elements of B (see below)
pos.def.matrix
Positive definite matrix to be used by corr.matrix() for B. Exactly one of scales and pos.definite.matrix should be specified. Supplying scales specifies the diagonal elements of B (off
power
In function corr(), the power to use in the exponent of the exponential. In the case of a diagonal pos.def.matrix (or, equivalently, using scales), the default value of 2 gives the standard metric, v
coords
In function corr(), a character string, with default cartesian meaning to interpret the elements of x1 (and x2) as coordinates in Cartesian space. The only other acceptable value is curr
method
An integer with values 1, 2, or 3. If 1, then use a fast matrix calculation that returns $e^{-(x-x')^TB(x-x')}$. If 2 or 3, return the appropriate output from corr(), noting that ellipsis arguments are passed to corr()
distance.function
Function to be used to calculate distances in corr.matrix(). Defaults to corr()
xold
Matrix, each row of which is an evaluated point
yold
(optional) matrix, each row of which is an evaluated point. If missing, use xold
spherical.distance.function
In corr, a function to determine the distance between two points; used if coords=spherical. A good one to choose is gcd() (that is, Great Circle Distance) of the goldstein library
...
In function corr.matrix(), extra arguments that are passed on to the distance function. In the default case in which the distance.function is corr(), one must pass scales, and one might wish to

Value

  • Returns the correlation function

Details

Evaluates a slight generalization of Oakley's equation 2.12 for the correlation between $\eta(x)$ and $\eta(x')$: $e^{-\left| (x-x')^TB(x-x')\right|^{\rm power/2}}$. This reduces to Oakley's form if power=2.

References

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

J. Oakley and A. O'Hagan, 2002. Bayesian Inference for the Uncertainty Distribution of Computer Model Outputs, Biometrika 89(4), pp769-784

R. K. S. Hankin 2005. Introducing BACCO, an R bundle for Bayesian analysis of computer code output, Journal of Statistical Software, 14(16)

Examples

Run this code
corr(1:10,10:1,scales=rep(1,10), power=2)
corr(1:10,10:1,pos.def.matrix=0.1+diag(10),power=2)
x <- latin.hypercube(4,7)  #4 points in 7-dimensional space
corr.matrix(x,scales=rep(1,7),power=1.5)

x[1,1] <- 100
corr.matrix(x,scales=rep(1,7), power=1.5)


# note that all the first row and first column apart from the [1,1]th
# element is zero (or very nearly so) because point number 1 is now very
# far from the other points.

#to use just a single dimension, remember to use the drop=FALSE argument:
corr.matrix(x[,1,drop=FALSE],scales=rep(1,1),power=1.5)


# For problems in 1D, coerce the independent variable to a matrix:
m <- c(0.2 , 0.4,0.403,0.9)
corr.matrix(cbind(m),scales=1)


# now use a non-default value for distance.function.
# Function f() below taken from Oakley's thesis page 12,
# equation 2.10:

f <- function(x,y,theta){
  d <- sum(abs(x-y))
  if(d >= theta){
    return(0)
  }else{
    return(1-d/theta)
  }
}


corr.matrix(xold=x, distance.function=f , method=2, theta=4)

 # Note the first row and first column is a single 1 and 3 zeroes
 # (because the first point, viz x[1,], is "far" from the other ponts).
 # Also note the method=2 argument here; method=1 is the fast slick
 # matrix method suggested by Doug and Jeremy, but this only works
 # for distance.function=corr.

Run the code above in your browser using DataLab