RFparameters(Storing=TRUE)
str(RFparameters())
############################################################
## ##
## use of TBM.points and TBM.center ##
## ##
############################################################
## The following example shows that the same realisation
## can be obtained on different grid geometries (or point
## configurations, i.e. grid, non-grid) using TBM3 (or TBM2)
x1 <- seq(-150,150,1)
y1 <- seq(-15, 15, 1)
x2 <- seq(-50, 50, 1)
model <- "exponential"
param <- c(0, 1, 0, 10)
meth <- "TBM3"
###### simulation of a random field on long thing stripe
runif(1)
rs <- get(".Random.seed", envir=.GlobalEnv, inherits = FALSE)
z1 <- GaussRF(x1, y1, model=model, param=param, grid=TRUE,
method=meth, TBM.center=0, Storing=TRUE)
do.call(getOption("device"), list(height=1.55, width=12))
par(mar=c(2.2, 2.2, 0.1, 0.1))
image(x1, y1, z1, col=rainbow(100))
polygon(range(x2)[c(1,2,2,1)], range(y1)[c(1,1,2,2)], border="red", lwd=3)
###### definition of a random field on a square of shorter diagonal
assign(".Random.seed", rs, envir=.GlobalEnv)
tbm.points <- length(GetRegisterInfo()$meth$sub[[1]]$sub[[1]]$S$line)
z2 <- GaussRF(x2, x2, model=model, param=param, grid=TRUE, register=1,
method=meth, TBM.center=0, TBM.points=tbm.points)
do.call(getOption("device"), list(height=4.3, width=4.3))
par(mar=c(2.2, 2.2, 0.1, 0.1))
image(x2, x2, z2, zlim=range(z1), col=rainbow(100))
polygon(range(x2)[c(1,2,2,1)], range(y1)[c(1,1,2,2)], border="red", lwd=3)
############################################################
## ##
## use of exactness ##
## ##
############################################################
x <- seq(0, 1, 1/30)
model <- list("+",
list("stable", alpha=1.0),
list(model="gencauchy", alpha=1.0, beta=2.0)
)
for (exactness in c(NA, FALSE, TRUE)) {
readline(paste("exactness: `", exactness, "'; press return"))
z <- GaussRF(x, x, grid=TRUE, gridtriple=FALSE,
model=model, exactness=exactness,
stationary.only=NA, Print=1, n=1,
TBM2.linesimustep=1, Storing=TRUE)
Print(GetRegisterInfo()$meth$name)
}
#############################################################
## The following gives a tiny example on the advantage of ##
## local.dependent=TRUE (and CE.dependent=TRUE) if in a ##
## study most of the time is spent with simulating the ##
## Gaussian random fields. Here, the covariance at a pair ##
## of points is estimated for n independentent repetitions ##
## and 2*n locally dependent dependent repetitions . ##
## To get the precision, the procedure is repeated m times.##
#############################################################
# In the example below, local.dependent speeds up the simulation
# by about factor 16 at the price of an increased variance of
# factor 1.5
x <- seq(0, 1, len=10)
y <- seq(0, 1, len=10)
grid.size <- c(length(x), length(y))
model <- list("$", var=1.1, aniso=matrix(nc=2, c(2,1,0.5,1)),
list(model="exp"))
(CovarianceFct(matrix(c(1, -1), ncol=2), model=model)) ## true value
m <- if (interactive()) 100 else 2
n <- if (interactive()) 100 else 10
# using local.dependent=FALSE (which is the default)
c1 <- numeric(m)
unix.time(
for (i in 1:m) {
cat("", i)
z <- GaussRF(x, y, model=model, grid=TRUE, method="cu", n=n,
local.dependent=FALSE, pch="")
c1[i] <- cov(z[1,length(y), ], z[length(x), 1, ])
}) # many times slower than with local.dependent=TRUE
mean(c1)
sd(c1)
# using local.dependent=TRUE...
c2 <- numeric(m)
unix.time(
for (i in 1:m) {
cat("", i)
z <- GaussRF(x, y, model=model, grid=TRUE, method="cu", n=2 * n,
local.dependent=TRUE, pch="")
c2[i] <- cov(z[1,length(y),], z[length(x), 1 , ])
})
mean(c2)
sd(c2) # the sd is samller (using more locally dependent realisations)
## but it is (much) faster! For n=n2 instead of n=2 * n, the
## value of sd(c2) would be larger due to the local dependencies
## in the realisations.
Run the code above in your browser using DataLab