Learn R Programming

geoR (version 1.5-6)

variofit: Variogram Based Parameter Estimation

Description

Estimate covariance parameters by fitting a parametric model to a empirical variogram. Variograms models can be fitted by using weighted or ordinary least squares.

Usage

variofit(vario, ini.cov.pars, cov.model = "matern",
         fix.nugget = FALSE, nugget = 0,
         fix.kappa = TRUE, kappa = 0.5,
         simul.number = NULL, max.dist = vario$max.dist,
         weights = c("npairs", "equal", "cressie"),
         minimisation.function,
         limits = pars.limits(), messages, ...)

Arguments

vario
an object of the class "variogram", typically an output of the function variog. The object is a list with information about the empirical variogram.
ini.cov.pars
initial values for the covariance parameters: $\sigma^2$ (partial sill) and $\phi$ (range parameter). See DETAILS below.
cov.model
a string with the name of the correlation function. For further details see documentation for cov.spatial. For the linear model use cov.model = "linear". Defaults are equi
fix.nugget
logical, indicating whether the parameter $\tau^2$ (nugget variance) should be regarded as fixed (fix.nugget = TRUE) or should be estimated (fix.nugget = FALSE). Defaults to FALSE.
nugget
value for the nugget parameter. Regarded as a fixed values if fix.nugget = TRUE or as a initial value for the minimization algorithm if fix.nugget = FALSE. Defaults to zero.
fix.kappa
logical, indicating whether the parameter $\kappa$ should be regarded as fixed or be estimated. Defaults to TRUE.
kappa
value of the smoothness parameter. Regarded as a fixed values if fix.kappa = TRUE or as a initial value for the minimization algorithm if fix.kappa = FALSE. Only required if one of the following correlation functions
simul.number
number of simulation. To be used when the object passed to the argument vario has empirical variograms for more than one data-set (or simulation). Indicates to which one the model will be fitted.
max.dist
maximum distance considered when fitting the variogram. Defaults to vario$max.dist.
weights
type weights used in the loss function. See DETAILS below.
limits
values defining lower and upper limits for the model parameters used in the numerical minimisation. Only valid if minimisation.function = "optim". The auxiliary function pars.limits
minimisation.function
minimization function used to estimate the parameters. Options are "optim", "nlm". If weights = "equal" the option "nls" is also valid and det as default. Otherwise defaults to "op
messages
logical. Indicates whether or not status messages are printed on the screen (or other output device) while the function is running.
...
further parameters to be passed to the minimization function. Typically arguments of the type control() which controls the behavior of the minimization algorithm. See documentation for the selected minimization function for furth

Value

  • An object of the class "variomodel" and "variofit" which is list with the following components:
  • nuggetvalue of the nugget parameter. An estimated value if fix.nugget = FALSE or a fixed value if fix.nugget = TRUE.
  • cov.parsa two elements vector with estimated values of the covariance parameters $\sigma^2$ and $\phi$, respectively.
  • cov.modela string with the name of the correlation function.
  • kappafixed value of the smoothness parameter.
  • valueminimized value of the loss function.
  • max.distmaximum distance considered in the variogram fitting.
  • minimisation.functionminimization function used.
  • weightsa string indicating the type of weights used for the variogram fitting.
  • methoda string indicating the type of variogram fitting method (OLS or WLS).
  • fix.kappalogical indicating whether the parameter $\kappa$ was fixed.
  • fix.nuggetlogical indicating whether the nugget parameter was fixed.
  • lambdatransformation parameters inherith from the object provided in the argument vario.
  • messagestatus messages returned by the function.
  • callthe function call.

concept

variogram parameter estimation

Details

Numerical minimization

The parameter values are found by numerical optimization using one of the functions: optim, nlm and nls. In given circunstances the algorithm may not converge to correct parameter values when called with default options and the user may need to pass extra options for the optimizers. For instance the function optim takes a control argument. The user should try different initial values and if the parameters have different orders of magnitude may need to use options to scale the parameters. Some possible workarounds in case of problems include:

  • rescale you data values (dividing by a constant, say)
  • rescale your coordinates (subtracting values and/or dividing by constants)
  • Use the mechanism to passcontrol()options for the optimiser internally
Initial values The algorithms for minimization functions require initial values of the parameters. A unique initial value is used if a vector is provided in the argument ini.cov.pars. The elements are initial values for $\sigma^2$ and $\phi$, respectively. This vector is concatenated with the value of the argument nugget if fix.nugget = FALSE and kappa if fix.kappa = TRUE. Specification of multiple initial values is also possible. If this is the case, the function searches for the one which minimizes the loss function and uses this as the initial value for the minimization algorithm. Multiple initial values are specified by providing a matrix in the argument ini.cov.pars and/or, vectors in the arguments nugget and kappa (if included in the estimation). If ini.cov.pars is a matrix, the first column has values of $\sigma^2$ and the second has values of $\phi$.

Alternatively the argument ini.cov.pars can take an object of the class eyefit or variomodel. This allows the usage of an output of the functions eyefit, variofit or likfit be used as initial value. If minimisation.function = "nls" only the values of $\phi$ and $\kappa$ (if this is included in the estimation) are used. Values for the remaning are not need by the algorithm. If cov.model = "linear" only the value of $\sigma^2$ is used. Values for the remaning are not need by this algorithm. If cov.model = "pure.nugget" no initial values are needed since no minimisation function is used.

Weights The different options for the argument weights are used to define the loss function to be minimised. The available options are as follows. [object Object],[object Object],[object Object],Where $\theta$ is the vector with the variogram parameters and for each $k^{th}$-bin $n_k$ is the number of pairs, $(\hat{\gamma}_k)$ is the value of the empirical variogram and $\gamma_k(\theta)$ is the value of the theoretical variogram. See also Cressie (1993) and Barry, Crowder and Diggle (1997) for further discussions on methods to estimate the variogram parameters.

References

Barry, J.T., Crowder, M.J. and Diggle, P.J. (1997) Parametric estimation of the variogram. Tech. Report, Dept Maths & Stats, Lancaster University. Cressie, N.A.C (1985) Mathematical Geology. 17, 563-586.

Cressie, N.A.C (1993) Statistics for Spatial Data. New York: Wiley. Further information on the package geoR can be found at: http://www.est.ufpr.br/geoR.

See Also

cov.spatial for a detailed description of the available correlation (variogram) functions, likfit for maximum and restricted maximum likelihood estimation, lines.variomodel for graphical output of the fitted model. For details on the minimization functions see optim, nlm and nls.

Examples

Run this code
data(s100)
vario100 <- variog(s100, max.dist=1)
ini.vals <- expand.grid(seq(0,1,l=5), seq(0,1,l=5))
ols <- variofit(vario100, ini=ini.vals, fix.nug=TRUE, wei="equal")
summary(ols)
wls <- variofit(vario100, ini=ini.vals, fix.nug=TRUE)
summary(wls)
plot(vario100)
lines(wls)
lines(ols, lty=2)

<testonly>vr <- variog(s100, max.dist=1)
## OLS#
o1 <- variofit(vr, ini = c(.5, .5), fix.nug=TRUE, wei = "equal")
o2 <- variofit(vr, ini = c(.5, .5), wei = "equal")
o3 <- variofit(vr, ini = c(.5, .5), fix.nug=TRUE,
      fix.kappa = FALSE, wei = "equal")
#o4 <- variofit(vr, ini = c(.5, .5), fix.kappa = FALSE, wei = "equal")
## WLS
w1 <- variofit(vr, ini = c(.5, .5), fix.nug=TRUE)
w2 <- variofit(vr, ini = c(.5, .5))
w3 <- variofit(vr, ini = c(.5, .5), fix.nug=TRUE, fix.kappa = FALSE)
w4 <- variofit(vr, ini = c(.5, .5), fix.kappa = FALSE)</testonly>

Run the code above in your browser using DataLab