Robust and customary external drift Kriging prediction
based on a spatial linear models fitted by georob
. The
predict
method for the class georob
computes fitted values, point
and block Kriging predictions as
well as model terms for display by termplot
.
# S3 method for georob
predict(object, newdata, type = c("signal", "response", "trend", "terms"),
terms = NULL, se.fit = TRUE, signif = 0.95, locations,
variogram.model = NULL, param = NULL, aniso = NULL, variogram.object = NULL,
control = control.predict.georob(), verbose = 0, ...)
control.predict.georob(full.covmat = FALSE, extended.output = FALSE,
mmax = 10000, ncores = pcmp[["max.ncores"]], pwidth = NULL, pheight = NULL,
napp = 1, pcmp = control.pcmp())
an object of class "georob"
(mandatory argument),
see georobObject
.
an optional data frame,
SpatialPointsDataFrame
,
SpatialPixelsDataFrame
,
SpatialGridDataFrame
,
SpatialPolygonsDataFrame
or an (optional) object of class
SpatialPoints
,
SpatialPixels
or
SpatialGrid
,
in which to look for variables
with which to compute fitted values or Kriging predictions, see Details. If
newdata
is a SpatialPolygonsDataFrame
then
block Kriging predictions are computed, otherwise point Kriging
predictions.
character keyword defining what target quantity should be predicted (computed). Possible values are
"signal"
: the “signal”
\(Z(\mbox{\boldmath$s$\unboldmath}) =
\mbox{\boldmath$x$\unboldmath}(\mbox{\boldmath$s$\unboldmath})^\mathrm{T}
\mbox{\boldmath$\beta$\unboldmath} +
B(\mbox{\boldmath$s$\unboldmath})\) of
the process (default),
"response"
: the observations
\(Y(\mbox{\boldmath$s$\unboldmath}) =
Z(\mbox{\boldmath$s$\unboldmath}) +
\varepsilon(\mbox{\boldmath$s$\unboldmath}),\)
"trend"
: the external drift
\(\mbox{\boldmath$x$\unboldmath}(\mbox{\boldmath$s$\unboldmath})^\mathrm{T}
\mbox{\boldmath$\beta$\unboldmath},\)
"terms"
: the model terms.
If type = "terms"
, which terms (default is all terms).
logical, only used if type
is equal to
"terms"
, see predict.lm
.
positive numeric equal to the tolerance or confidence level
for computing respective intervals. If NULL
no intervals are
computed.
an optional one-sided formula specifying what variables
of newdata
are the coordinates of the prediction points
(default: object[["locations.objects"]][["locations"]]
).
an optional character keyword defining the
variogram model to be used for Kriging, see georob
and
Details.
an optional named numeric vector with values of the
variogram parameters used for Kriging, see georob
and
Details.
an optional named numeric vector with values of anisotropy
parameters of a variogram used for Kriging, see georob
and
Details.
an optional list that defines a possibly nested
variogram model used for Kriging, see georob
and
Details.
a list with the components full.covmat
,
extended.output
, mmax
, ncores
, pwidth
,
pheight
, napp
and pcmp
or a function such as
control.predict.georob
that generates such a list.
logical controlling whether the full covariance matrix
of the prediction errors is returned (TRUE
) or only the vector
with its diagonal elements (FALSE
, default), see Value for
an explanation of the effect of full.covmat
.
logical controlling whether the covariance
matrices of the Kriging predictions and of the data should be computed, see
Details (default FALSE
).
integer equal to the maximum number (default 10000
) of
prediction items, computed in a sub-task, see Details.
positive integer controlling how many cores are used for parallelized computations, see Details.
numeric scalars, used to tune numeric
integration of semi-variances for block Kriging, see
preCKrige
.
a list of arguments passed to pmm
or a
function such as control.pcmp
that generates such a list
(see control.pcmp
for allowed arguments).
positive integer controlling logging of diagnostic
messages to the console. verbose = 0
(default) largely suppresses
such messages.
arguments passed to control.predict.georob
.
If type
is equal to "terms"
then a vector, a matrix, or a
list with prediction results along with bounds and standard errors, see
predict.lm
. Otherwise, the structure and contents
of the output generated by predict.georob
are determined by the
class of newdata
and the logical flags full.covmat
and
extended.output
:
If full.covmat
is FALSE
then the result is an object of a "similar"
class as newdata
(data frame,
SpatialPointsDataFrame
,
SpatialPixelsDataFrame
SpatialGridDataFrame
,
SpatialPolygonsDataFrame
).
The data frame or the
data
slot of the Spatial...DataFrame
objects
have the following components:
the coordinates of the prediction points (only present if
newdata
is a data frame).
pred
: the Kriging predictions (or fitted values).
se
: the root mean squared prediction errors (Kriging
standard errors).
lower
, upper
: the limits of tolerance/confidence
intervals,
trend
, var.pred
, cov.pred.target
,
var.target
: only present if extended.output
is TRUE
,
see Details.
If full.covmat
is TRUE
then predict.georob
returns a list
with the following components:
pred
: a data frame or a Spatial...DataFrame
object
as described above for full.covmat = FALSE
.
mse.pred
: the full covariance matrix of the prediction errors,
\(Y(\mbox{\boldmath$s$\unboldmath})-\widehat{Y}(\mbox{\boldmath$s$\unboldmath})\) or
\(Z(\mbox{\boldmath$s$\unboldmath})-\widehat{Z}(\mbox{\boldmath$s$\unboldmath})\)
see Details.
var.pred
: the full covariance matrix of the
Kriging predictions, see Details.
cov.pred.target
: the full covariance matrix of the
predictions and the prediction targets, see Details.
var.target
: the full covariance matrix of the
prediction targets, see Details.
If newdata
is an object of class SpatialPoints
,
SpatialPixels
or SpatialGrid
then the drift model may only
use the coordinates as covariates (universal Kriging). Furthermore the
names used for the coordinates in newdata
must be the same as in
data
when creating object
(argument locations
of
predict.georob
should not be used). Note that the result returned
by predict.georob
is then an object of class
SpatialPointsDataFrame
, SpatialPixelsDataFrame
or
SpatialGridDataFrame
.
The predict
method for class georob
uses the packages
parallel, snow and snowfall for parallelized
computation of Kriging predictions. If there are \(m\) items to
predict, the task is split into ceiling(m/mmax)
sub-tasks that are
then distributed to ncores
CPUs. Evidently, ncores = 1
suppresses parallel execution. By default, the function uses all
available CPUs as returned by detectCores
.
Note that if full.covmat
is TRUE
mmax
must exceed
\(m\) (and parallel execution is not possible).
The argument extended.output = TRUE
is used to compute all
quantities required for (approximately) unbiased back-transformation of
Kriging predictions of log-transformed data to the original scale of the
measurements by lgnpp
. In more detail, the following items
are computed:
trend
: the fitted values,
\(\mbox{\boldmath$x$\unboldmath}(\mbox{\boldmath$s$\unboldmath})\mathrm{^T}\widehat{\mbox{\boldmath$\beta$\unboldmath}}\),
var.pred
: the variances of the Kriging predictions,
\(\mathrm{Var}_{\hat{\theta}}[\widehat{Y}(\mbox{\boldmath$s$\unboldmath})]\) or
\(\mathrm{Var}_{\hat{\theta}}[\widehat{Z}(\mbox{\boldmath$s$\unboldmath})]\),
cov.pred.target
: the covariances between the predictions and the
prediction targets,
\(\mathrm{Cov}_{\hat{\theta}}[\widehat{Y}(\mbox{\boldmath$s$\unboldmath}),Y(\mbox{\boldmath$s$\unboldmath})]\) or
\(\mathrm{Cov}_{\hat{\theta}}[\widehat{Z}(\mbox{\boldmath$s$\unboldmath}),Z(\mbox{\boldmath$s$\unboldmath})]\),
var.target
: the variances of the prediction targets
\(\mathrm{Var}_{\hat{\theta}}[Y(\mbox{\boldmath$s$\unboldmath})]\) or
\(\mathrm{Var}_{\hat{\theta}}[Z(\mbox{\boldmath$s$\unboldmath})]\).
Note that the component var.pred
is also present if
type
is equal to "trend"
, irrespective of the choice for extended.output
.
This component contains then the variances of the fitted values.
Nussbaum, M., Papritz, A., Baltensweiler, A. and Walthert, L. (2012) Organic Carbon Stocks of Swiss Forest Soils, Institute of Terrestrial Ecosystems, ETH Zurich and Swiss Federal Institute for Forest, Snow and Landscape Research (WSL), pp. 51. http://dx.doi.org/10.3929/ethz-a-007555133
K<U+009F>nsch, H. R., Papritz, A., Schwierz, C. and Stahel, W. A. (2011) Robust estimation of the external drift and the variogram of spatial data. Proceedings of the ISI 58th World Statistics Congress of the International Statistical Institute. http://e-collection.library.ethz.ch/eserv/eth:7080/eth-7080-01.pdf
georobIntro
for a description of the model and a brief summary of the algorithms;
georob
for (robust) fitting of spatial linear models;
georobObject
for a description of the class georob
;
profilelogLik
for computing profiles of Gaussian likelihoods;
plot.georob
for display of RE(ML) variogram estimates;
control.georob
for controlling the behaviour of georob
;
georobModelBuilding
for stepwise building models of class georob
;
cv.georob
for assessing the goodness of a fit by georob
;
georobMethods
for further methods for the class georob
;
lgnpp
for unbiased back-transformation of Kriging prediction
of log-transformed data;
georobSimulation
for simulating realizations of a Gaussian process
from model fitted by georob
; and finally
sample.variogram
and fit.variogram.model
for robust estimation and modelling of sample variograms.
# NOT RUN {
data(meuse)
data(meuse.grid)
coordinates(meuse.grid) <- ~x+y
meuse.grid.pixdf <- meuse.grid
gridded(meuse.grid.pixdf) <- TRUE
library(constrainedKriging)
data(meuse.blocks)
r.logzn.rob <- georob(log(zinc) ~ sqrt(dist), data = meuse, locations = ~ x + y,
variogram.model = "RMexp", param = c(variance = 0.15, nugget = 0.05, scale = 200),
tuning.psi = 1., control = control.georob(cov.bhat = TRUE, full.cov.bhat = TRUE))
## point predictions of log(Zn)
r.pred.points <- predict(r.logzn.rob, newdata = meuse.grid.pixdf,
control = control.predict.georob(extended.output = TRUE, full.covmat = TRUE))
str(r.pred.points$pred@data)
## back-transformation of point predictions
r.backtf.pred.points <- lgnpp(r.pred.points)
str(r.pred.points$pred@data)
spplot(r.backtf.pred.points[["pred"]], zcol = "lgn.pred", main = "Zn content")
## predicting mean Zn content for whole area
r.block <- lgnpp(r.pred.points, is.block = TRUE, all.pred = r.backtf.pred.points[["pred"]])
r.block
## block predictions of log(Zn)
r.pred.block <- predict(r.logzn.rob, newdata = meuse.blocks,
control = control.predict.georob(extended.output = TRUE,
pwidth = 75, pheight = 75))
r.backtf.pred.block <- lgnpp(r.pred.block, newdata = meuse.grid)
spplot(r.backtf.pred.block, zcol = "lgn.pred", main = "block means Zn content")
# }
# NOT RUN {
# }
Run the code above in your browser using DataCamp Workspace