sk_sim {snapKrig} | R Documentation |
Random draw from multivariate normal distribution for sk grids
Description
Generates a random draw from the multivariate Gaussian distribution for the
covariance model pars
on grid g
, with mean zero.
Usage
sk_sim(g, pars = sk_pars(g), n_layer = 1, fac = NULL, sk_out = TRUE)
Arguments
g |
an sk object or any grid object accepted by |
pars |
list, covariance parameters in form returned by |
n_layer |
positive integer, the number of draws to return |
fac |
list, optional pre-computed factorization of component correlation matrices |
sk_out |
logical, if TRUE an sk grid is returned |
Details
pars
and g
define the model's covariance matrix V. This function uses base::rnorm
to get a vector of independent standard normal variates, which it multiplies by the square
root of the covariance matrix, V, for the desired model (as defined by pars
and g
). The
result has a multivariate normal distribution with mean zero and covariance V.
Multiple independent draws can be computed more efficiently by reusing the factorization
of V. This can be pre-computed with sk_var
and supplied in fac
, or users can set
n_layer
and the function will do this automatically.
Value
sk grid or its vectorized form (vector for single-layer case, matrix for multi-layer case)
See Also
sk sk_pars base::rnorm
Other variance-related functions:
sk_GLS()
,
sk_LL()
,
sk_cmean()
,
sk_nLL()
,
sk_var()
Examples
# example grid and covariance parameters
gdim = c(100, 200)
g = sk(gdim)
pars_gau = sk_pars(g)
# this example has a large nugget effect
g_sim = sk_sim(g, pars_gau)
plot(g_sim)
# repeat with smaller nugget effect for less noisy data
pars_smooth = utils::modifyList(pars_gau, list(eps=1e-2))
g_sim = sk_sim(g, pars_smooth)
plot(g_sim)
# the nugget effect can be very small, but users should avoid eps=0
pars_smoother = utils::modifyList(pars_gau, list(eps=1e-12))
g_sim = sk_sim(g, pars_smoother)
plot(g_sim)
# multi-layer example
g_sim_multi = sk_sim(g, pars_smoother, n_layer=3)
plot(g_sim_multi, layer=1)
plot(g_sim_multi, layer=2)
plot(g_sim_multi, layer=3)