update.homGP {hetGP} | R Documentation |
Fast homGP
-update
Description
Update existing homGP
model with new observations
Usage
## S3 method for class 'homGP'
update(
object,
Xnew,
Znew = NULL,
lower = NULL,
upper = NULL,
noiseControl = NULL,
known = NULL,
maxit = 100,
...
)
Arguments
object |
initial model of class |
Xnew |
matrix of new design locations; |
Znew |
vector new observations at those new design locations, of length |
lower , upper , noiseControl , known |
optional bounds for MLE optimization, see |
maxit |
maximum number of iterations for the internal L-BFGS-B optimization method; see |
... |
no other argument for this method. |
Details
In case hyperparameters need not be updated, maxit
can be set to 0
.
In this case it is possible to pass NA
s in Znew
, then the model can still be used to provide updated variance predictions.
Examples
## Not run:
##------------------------------------------------------------
## Example : Sequential Homoskedastic GP modeling
##------------------------------------------------------------
set.seed(42)
## Spatially varying noise function
noisefun <- function(x, coef = 1){
return(coef * (0.05 + sqrt(abs(x)*20/(2*pi))/10))
}
nvar <- 1
n <- 10
X <- matrix(seq(0, 2 * pi, length=n), ncol = 1)
mult <- sample(1:10, n)
X <- rep(X, mult)
Z <- sin(X) + rnorm(length(X), sd = noisefun(X))
testpts <- matrix(seq(0, 2*pi, length = 10*n), ncol = 1)
model <- model_init <- mleHomGP(X = X, Z = Z,
lower = rep(0.1, nvar), upper = rep(50, nvar))
preds <- predict(x = testpts, object = model_init)
plot(X, Z)
lines(testpts, preds$mean, col = "red")
nsteps <- 10
for(i in 1:nsteps){
newIds <- sort(sample(1:(10*n), 10))
newX <- testpts[newIds, drop = FALSE]
newZ <- sin(newX) + rnorm(length(newX), sd = noisefun(newX))
points(newX, newZ, col = "blue", pch = 20)
model <- update(object = model, newX, newZ)
X <- c(X, newX)
Z <- c(Z, newZ)
plot(X, Z)
print(model$nit_opt)
}
p_fin <- predict(x = testpts, object = model)
lines(testpts, p_fin$mean, col = "blue")
lines(testpts, qnorm(0.05, p_fin$mean, sqrt(p_fin$sd2)), col = "blue", lty = 2)
lines(testpts, qnorm(0.95, p_fin$mean, sqrt(p_fin$sd2)), col = "blue", lty = 2)
lines(testpts, qnorm(0.05, p_fin$mean, sqrt(p_fin$sd2 + p_fin$nugs)),
col = "blue", lty = 3)
lines(testpts, qnorm(0.95, p_fin$mean, sqrt(p_fin$sd2 + p_fin$nugs)),
col = "blue", lty = 3)
model_direct <- mleHomGP(X = X, Z = Z, lower = rep(0.1, nvar), upper = rep(50, nvar))
p_dir <- predict(x = testpts, object = model_direct)
print(model_direct$nit_opt)
lines(testpts, p_dir$mean, col = "green")
lines(testpts, qnorm(0.05, p_dir$mean, sqrt(p_dir$sd2)), col = "green", lty = 2)
lines(testpts, qnorm(0.95, p_dir$mean, sqrt(p_dir$sd2)), col = "green", lty = 2)
lines(testpts, qnorm(0.05, p_dir$mean, sqrt(p_dir$sd2 + p_dir$nugs)),
col = "green", lty = 3)
lines(testpts, qnorm(0.95, p_dir$mean, sqrt(p_dir$sd2 + p_dir$nugs)),
col = "green", lty = 3)
lines(testpts, sin(testpts), col = "red", lty = 2)
## Compare outputs
summary(model_init)
summary(model)
summary(model_direct)
## End(Not run)
[Package hetGP version 1.1.6 Index]