It also simulates conditional random fields for
For basic simulation of Gaussian random fields, see RFsimulate. See RFsimulate.more.examples and RFsimulate.sophisticated.examples for further examples.
RMmodel
,
RFformula
or formula
;
specifies the model to be simulated
RMmodel
, model
specifies
RPgauss
) and for fields based on Gaussian fields
(e.g. RPbernoulli
);
type RFgetModelNames(type="variogram")
for a list of available models; see also RMmodel
RFgetModelNames(type='shape')
for a list of
available models
RFformula
or formula
,
submodel
specifies a linear mixed model where random
effects can be modelled by Gaussian random fields;
see RFformula
for details on model
specification.
GridTopology
or
raster
;
if matrix, ncol(x)
is the dimension
of the index space; matrix notation is required in case of more than 3 space
dimensions; in this case, if grid=FALSE
, x_ij
is the
i-th coordinate in the j-th dimension; otherwise, if
grid=TRUE
, the columns of x
are interpreted as
gridtriples (see grid
); if of class GridTopology
,
x
is interpreted as grid definition and grid
is automatically set to TRUE
x
is a matrixx
is a matrixT
must always be an equidistant vector or given in a
gridtriple format (see argument grid
); for each component
of T
, the random field is simulated at all location points
x
,
y
, and z
or the columns of x
should be
interpreted as a grid definition (see Details). If grid=TRUE
,
either x
, y
, and z
must
be equidistant vectors in ascending order or the columns of x
must be given in the gridtriple format:
c(from, stepsize, len)
.
Note: if grid
is not given, RFsimulate
tries to
guess what is meant.
c(from, stepsize, len)
(see Details)
RFsp
;
coordinates and response values of
measurements in case that conditional simulation is to
be performed;
if a matrix or a data.frame, the first columns are
interpreted as coordinate vectors, and the last column(s) as
(multiple) measurement(s) of the field; if x
is missing,
data
may contain NA
s, which are then replaced by
conditionally simulated values; if data
is missing, unconditional
simulation is performed;
for details on matching of variable names see Details; if of class
RFsp
model
; gives the model of the
measurement errors for the measured data
(which must be given
in this case!), see Details,
err.model=NULL
(default) corresponds to error-free
measurements, the most common alternative is
err.model=RMnugget()
;
ignored if data
is missing
dist
representing
the upper trianguar part of the matrix of Euclidean distances
between the points at which the field is to be simulated; only
applicable for stationary and isotropic models; if not NULL
,
dim
must be given and x
, y
, z
and
T
must be missing or NULL
. If distances
are given, the current value of spConform
, see
RFoptions
, is ignored and instead
spConform=FALSE
is used. (This fact may change in future.)
RFoptions
RFsp
;
result is of class
RFspatialGridDataFrame
if $[space-time-dimension > 1]$ and the coordinates are on a grid,
result is of class
RFgridDataFrame
if $[space-time-dimension = 1]$ and the coordinates are on a grid,
result is of class
RFspatialPointsDataFrame
if $[space-time-dimension > 1]$ and the coordinates are not on a grid,
result is of class
RFpointsDataFrame
if $[space-time-dimension = 1]$ and the coordinates are not on a
grid.The output format can be switched to the "old" array format using
RFoptions
, either by globally setting
RFoptions(spConform=FALSE)
or by passing spConform=FALSE
in the call of RFsimulate
.
Then the object returned by RFsimulate
depends on the arguments n
and grid
in the following way:if vdim > 1
the vdim
-variate vector makes the first dimensionif grid=TRUE
an array of the dimension of the
random field makes the next dimensions. Here, the dimensions
are ordered in the sequence x
, y
, z
, T
(if given).Else if no time component is given, then the values are passed as a
single vector. Else if the time component is given the next 2
dimensions give the space and the time, respectively.if n > 1
the repetitions make the last dimensionNote: Conversion between the sp
format and the conventional format can be
done using the method RFspDataFrame2conventional
and the
function conventional2RFspDataFrame
.InitRFsimulate
returns 0 if no error has occurred and a positive value
if failed.RFsimulate
simulates different classes of random fields,
controlled by the wrapping model. If the wrapping function of the model
argument is a covariance
or variogram model (i.e., one of list obtained by
RFgetModelNames(type="variogram",
group.by="type")
, by default, a Gaussian field
with the corresponding covariance structure is simulated.
By default, the simulation method is chosen automatically through internal algorithms.
The simulation method can be set explicitly by enclosing the
covariance function with a method specification.
If other than Gaussian fields are to be simulated, the model
argument must be enclosed by a function specifying the type of the
random field.
There are different possibilities of passing the locations at which
the field is to be simulated. If grid=FALSE
, all coordinate
vectors (except for the time component $T$) must have the same
length and the field is only simulated at the locations given by the
rows of $x$ or of cbind(x, y, z)
. If $T$ is not
missing, the field is simulated for all combinations
$(x[i, ], T[k])$ or $(x[i], y[i], z[i], T[k])$,
$i=1, ..., $nrow(x)
, $k=1, ..., $length(T)
,
even if model
is not explicitly a space-time model.
If grid=TRUE
, the vectors x
,
y
, z
and T
or the columns of x
and
T
are
interpreted as a grid definition, i.e. the field is simulated at all
locations $(x_i, y_j, z_k, T_l)$, as given by
expand.grid(x, y, z, T)
.
Here, grid means equidistant in each direction, i.e. all
vectors must be equidistant and in ascending order.
In case of more than 3 space dimensions, the coordinates must be
given in matrix notations. To enable different grid lengths for each
direction in combination with the matrix notation, the
gridtriple notation c(from, stepsize, len)
is used:
If x
, y
,
z
, T
or the columns of x
are of length 3, they
are internally replaced by seq(from=from,
to=from+(len-1)*stepsize, by=stepsize)
, i.e. the field
is simulated at all locations
expand.grid(seq(x$from, length.out=x$len, by=x$stepsize),
seq(y$from, length.out=y$len, by=y$stepsize),
seq(z$from, length.out=z$len, by=z$stepsize),
seq(T$from, length.out=T$len, by=T$stepsize))
If data
is passed, conditional simulation is performed.
RFsp
,
ncol(data@coords)
must equal the dimension of the index
space. If data@data
contains only a single variable,
variable names are optional. If data@data
contains
more than one variable, variables must be named and model
must be given in the tilde notation resp ~ ...
(see
RFformula
) and "resp"
must be contained
in names(data@data)
.
data
is a matrix or a data.frame, either ncol(data)
equals $(dimension of index space + 1)$ and the order of the
columns is (x, y, z, T, response) or, if data
contains
more than one
response variable (i.e. ncol(data) > (dimension of index
space + 1)
), colnames(data)
must contain
colnames(x)
or those of "x", "y", "z", "T"
that
are not missing. The response variable name is matched with
model
, which must be given in the tilde notation. If
"x", "y", "z", "T"
are missing and data
contains
NA
s, colnames(data)
must contain an element which starts
with data; the corresponding column and those behind it are
interpreted as the given data and those before the corresponding
column are interpreted as the coordinates.
x
is missing, RFsimulate
searches for
NA
s in the data and performs a conditional simulation
for them.
Specification of err.model
:
In geostatistics we have two different interpretations of a nugget
effect: small scale variability and measurement error.
The result of conditional simulation usually does not include the
measurement error. Hence the measurement error err.model
must be given separately. For sake of generality, any model (and not
only the nugget effect) is allowed.
Consequently, err.model
is ignored
when unconditional simulation is performed.
General
Original work:
Wood, A.T.A. and Chan, G. (1994) Simulation of stationary Gaussian processes in $[0,1]^d$ J. Comput. Graph. Stat. 3, 409-432.
The code used in RandomFields is based on Dietrich and Newsam (1996).
Matheron, G. (1973) The intrinsic random functions and their applications. Adv. Appl. Probab. 5, 439-468.
Schlather, M. (2004) Turning layers: A space-time extension of turning bands. Submitted
RFoptions
,
RMmodel
,
RFgui
,
methods for simulating Gaussian random fields
,
RFfit
,
RFempiricalvariogram
,
RFsimulate.more.examples,
RFsimulate.sophisticated.examples,
RPgauss
,
RFoptions(seed=0) ## *ANY* simulation will have the random seed 0; set
## RFoptions(seed=NA) to make them all random again
Run the code above in your browser using DataLab