View source: R/autofitVariogram.r
autofitVariogram | R Documentation |
Automatically fitting a variogram to the data on which it is applied. The automatic fitting
is done through fit.variogram. In fit.variogram the user had to supply an initial estimate for the sill,
range etc. autofitVariogram
provides this estimate based on the data and then calls fit.variogram.
autofitVariogram(formula,
input_data,
model = c("Sph", "Exp", "Gau", "Ste"),
kappa = c(0.05, seq(0.2, 2, 0.1), 5, 10),
fix.values = c(NA,NA,NA),
verbose = FALSE,
GLS.model = NA,
start_vals = c(NA,NA,NA),
miscFitOptions = list(),
...)
formula |
formula that defines the dependent variable as a linear model of independent variables; suppose the dependent variable has name 'z', for ordinary and simple kriging use the formula 'z~1'; for simple kriging also define 'beta' (see below); for universal kriging, suppose 'z' is linearly dependent on 'x' and 'y', use the formula 'z~x+y'. |
input_data |
An object of SpatialPointsDataFrame-class or sf . |
model |
The list of variogrammodels that will be tested. |
kappa |
Smoothing parameter of the Matern model. Provide a list if you want to check more than one value. |
fix.values |
Can be used to fix a variogram parameter to a certain value. It consists of a list with a length of three. The items describe the fixed value for the nugget, range and sill respectively. They need to be given in that order. Setting the value to NA means that the value is not fixed. |
verbose |
logical, if TRUE the function will give extra feedback on the fitting process |
GLS.model |
If a variogram model is passed on through this parameter a Generalized Least Squares sample variogram is calculated. |
start_vals |
Can be used to give the starting values for the variogram fitting. The items describe the fixed value for the nugget, range and sill respectively. They need to be given in that order. Setting the value to NA means that the value will be automatically chosen. |
miscFitOptions |
A list with named arguments that provide additional control over the fitting process.
For example:
|
... |
parameters that are passed on to variogram when calculating the sample variogram. |
Geostatistical routines are used from package gstat
.
A few simple choices are made when estimating the inital guess for fit.variogram
.
The initial sill is estimated as the mean
of the max
and the median
of the semi-variance. The inital range is defined as 0.10 times the diagonal of the bounding
box of the data. The initial nugget is defined as the min
of the the semi-variance.
There are five different types of models that are often used:
A shperical model.
An exponential model.
A gaussian model.
A model of the Matern familiy
Matern, M. Stein's parameterization
A list of all permitted variogram models is available by typing vgm() into the R console.
autofitVariogram
iterates over the variogram models listed in model
and picks the model
that has the smallest residual sum of squares with the sample variogram. For the Matern model, all the
kappa values in kappa
are tested.
Note that when using the power model, and not specifying starting values yourself, the sill is set to 1, the range to 1 and the nugget to 0. This is because the normal initial values for those paramters don't work well with the power model. I consider this a temporary solution, any suggestions are appreciated.
It is possible to pass anisotropy parameters to autofitVariogram
. However, autofitVariogram
does not fit anisotropic variogram models. The function sees the anisotropic sample variogram as one big sample variogram. So it fits an average isotropic variogram model from the anisotropic sample variogram. A warning is issued when a users passes alpha
to autofitVariogram
.
An object of type autofitVariogram
is returned. This object contains the experimental variogram,
the fitted variogram model and the sums of squares (sserr
) between the sample variogram and the
fitted variogram model.
autofitVariogram
is mostly used indirectly through the function autoKrige
Paul Hiemstra, paul@numbertheory.nl
fit.variogram
, autoKrige
, posPredictionInterval
library(sp)
data(meuse)
coordinates(meuse) =~ x+y
variogram = autofitVariogram(zinc~1,meuse)
plot(variogram)
# Residual variogram
data(meuse)
coordinates(meuse) =~ x+y
variogram = autofitVariogram(zinc ~ soil + ffreq + dist, meuse)
plot(variogram)
# Settings additional fitting options
variogram = autofitVariogram(zinc ~ soil + ffreq + dist, meuse,
miscFitOptions = list(merge.small.bins = FALSE))
plot(variogram)
# Settings the minimum number of pairs per bin quite high
# to see the effect of merging bins
variogram = autofitVariogram(zinc ~ soil + ffreq + dist, meuse,
miscFitOptions = list(min.np.bin = 500))
plot(variogram)
# ...and disable the merging, note the difference between the two plots
variogram = autofitVariogram(zinc ~ soil + ffreq + dist, meuse,
miscFitOptions = list(min.np.bin = 500, merge.small.bins = FALSE))
plot(variogram)
# An example of autofitVariogram with anisotropic sample variogram.
# This is not supported, see details section.
vm.isotropic = autofitVariogram(log(zinc) ~ dist, meuse)
# The following line might not work, depending on version of R and gstat
# vm.anisotropic = autofitVariogram(log(zinc) ~ dist, meuse, alpha = c(0,45,90,135))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.