You can find the corresponding article in the publications section of this website, and the slides in the presentation section.
The R-code below can be used to reproduce the simple example illustrated in the slides and in the article.
# Introductory comments:
#
# To run this script, you need to install R, the language for statistical computing.
# https://cran.r-project.org/
# For ease of use, you may consider RStudio IDE, but this is not required.
# https://www.rstudio.com/
# For a tutorial/introduction to R, see e.g.:
# https://cran.r-project.org/doc/manuals/r-release/R-intro.html
# Note: the following line loads the package CEGO
# If it is not installed, please do so first, using:
# install.packages("CEGO")
# Please note, that you need the most recent version (2.2.0)
# of the package CEGO.
require(CEGO)
nsim <- 10 # number of simulations / realizations
seed <- 12121212 # RNG seed
set.seed(seed)
m <- 100 # number of samples to be simulated at
# objective function:
fun <- function(x){
exp(-20* x) + sin(6*x^2) + x
}
# "vectorize" target
f <- function(x){sapply(x,fun)}
# distance function (for model/kernel)
dF <- function(x,y)(sum((x-y)^2))
# plot parameters
par(mfrow=c(3,1),mar=c(2.3,2.5,0.2,0.2),mgp=c(1.4,0.5,0))
# create test samples for plots
xtest <- as.list(seq(from=-0,by=0.005,to=1))
plot(xtest,f(xtest),type="l",lty=2,xlab="x",
ylab="Estimation",ylim=c(-0.5,1.7))
# evaluation samples (training data)
xb <- c(0.1,0.4,0.54,0.6,0.8,0.99)
yb <- f(xb)
# create support samples for simulation
x <- as.list(sort(c(runif(m-length(xb)),unlist(xb))))
# fit the model
fit <- modelKriging(xb,yb,
control=list(distanceFunction=dF,
algThetaControl=
list(method="NLOPT_GN_DIRECT_L",
funEvals=100),useLambda=F))
fit
# predicted obj. function values
ypred <- predict(fit,as.list(xtest))$y
lines(unlist(xtest),ypred)
points(unlist(xb),yb,pch=19)
##############################
# create test functions with non conditional sim.
##############################
fun <- createSimulatedTestFunction(x,fit,nsim,F,seed=1)
ynew <- NULL
for(i in 1:nsim)
ynew <- cbind(ynew,fun[[i]](xtest))
rangeY <- range(ynew)
plot(unlist(xtest),ynew[,1],type="l",
xlab="x",ylab="Non-conditional",ylim=c(-0.5,1.7))
for(i in 2:nsim){
lines(unlist(xtest),ynew[,i],col=i,type="l")
}
##############################
# create test functions with conditional sim.
##############################
fun <- createSimulatedTestFunction(x,fit,nsim,T,seed=1)
ynew <- NULL
for(i in 1:nsim)
ynew <- cbind(ynew,fun[[i]](xtest))
rangeY <- range(ynew)
plot(unlist(xtest),ynew[,1],type="l",
xlab="x",ylab="Conditional",ylim=c(-0.5,1.7))
for(i in 2:nsim){
lines(unlist(xtest),ynew[,i],col=i,type="l")
}
points(unlist(xb),yb,pch=19)