newGP {laGP} | R Documentation |
Create A New GP Object
Description
Build a Gaussian process C-side object based on the X
-Z
data and parameters provided, and augment those objects with new
data
Usage
newGP(X, Z, d, g, dK = FALSE)
newGPsep(X, Z, d, g, dK = FALSE)
updateGP(gpi, X, Z, verb = 0)
updateGPsep(gpsepi, X, Z, verb = 0)
Arguments
X |
a |
Z |
a vector of responses/dependent values with |
d |
a positive scalar lengthscale parameter for an isotropic Gaussian
correlation function ( |
g |
a positive scalar nugget parameter |
dK |
a scalar logical indicating whether or not derivative information
(for the lengthscale) should be maintained by the GP object;
this is required for calculating MLEs/MAPs of the lengthscale
parameter(s) via |
gpi |
a C-side GP object identifier (positive integer); e.g., as returned by |
gpsepi |
similar to |
verb |
a non-negative integer indicating the verbosity level. A positive value
causes progress statements to be printed to the screen for each
update of |
Details
newGP
allocates a new GP object on the C-side and returns its
unique integer identifier (gpi
), taking time which is cubic on
nrow(X)
; allocated GP objects must (eventually) be destroyed
with deleteGP
or deleteGPs
or memory will leak.
The same applies for newGPsep
, except deploying a separable
correlation with limited feature set; see deleteGPsep
and
deleteGPseps
updateGP
takes gpi
identifier as
input and augments that GP with new data. A sequence of updates is
performed, for each i in 1:nrow(X)
, each taking time which is
quadratic in the number of data points.
updateGP
also updates any statistics needed in order to quickly
search for new local design candidates via laGP
.
The same applies to updateGPsep
on gpsepi
objects
Value
newGP
and newGPsep
create
a unique GP indicator (gpi
or gpsepi
) referencing a C-side object;
updateGP
and updateGPsep
do not return anything, but yields a
modified C-side object as a side effect
Author(s)
Robert B. Gramacy rbg@vt.edu
References
For standard GP inference, refer to any graduate text, e.g., Rasmussen & Williams Gaussian Processes for Machine Learning, or
Gramacy, R. B. (2020) Surrogates: Gaussian Process Modeling, Design and Optimization for the Applied Sciences. Boca Raton, Florida: Chapman Hall/CRC. (See Chapter 6.) https://bobby.gramacy.com/surrogates/
For efficient updates of GPs, see:
R.B. Gramacy and D.W. Apley (2015). Local Gaussian process approximation for large computer experiments. Journal of Computational and Graphical Statistics, 24(2), pp. 561-678; preprint on arXiv:1303.0383; https://arxiv.org/abs/1303.0383
See Also
vignette("laGP")
,
deleteGP
, mleGP
, predGP
, laGP
Examples
## for more examples, see predGP and mleGP docs
## simple sine data
X <- matrix(seq(0,2*pi,length=7), ncol=1)
Z <- sin(X)
## new GP fit
gpi <- newGP(X, Z, 2, 0.000001)
## make predictions
XX <- matrix(seq(-1,2*pi+1, length=499), ncol=ncol(X))
p <- predGP(gpi, XX)
## sample from the predictive distribution
if(require(mvtnorm)) {
N <- 100
ZZ <- rmvt(N, p$Sigma, p$df)
ZZ <- ZZ + t(matrix(rep(p$mean, N), ncol=N))
matplot(XX, t(ZZ), col="gray", lwd=0.5, lty=1, type="l",
xlab="x", ylab="f-hat(x)", bty="n")
points(X, Z, pch=19, cex=2)
}
## update with four more points
X2 <- matrix(c(pi/2, 3*pi/2, -0.5, 2*pi+0.5), ncol=1)
Z2 <- sin(X2)
updateGP(gpi, X2, Z2)
## make a new set of predictions
p2 <- predGP(gpi, XX)
if(require(mvtnorm)) {
ZZ <- rmvt(N, p2$Sigma, p2$df)
ZZ <- ZZ + t(matrix(rep(p2$mean, N), ncol=N))
matplot(XX, t(ZZ), col="gray", lwd=0.5, lty=1, type="l",
xlab="x", ylab="f-hat(x)", bty="n")
points(X, Z, pch=19, cex=2)
points(X2, Z2, pch=19, cex=2, col=2)
}
## clean up
deleteGP(gpi)