likfit(geodata, coords = geodata$coords, data = geodata$data,
trend = "cte", ini.cov.pars, fix.nugget = FALSE, nugget = 0,
fix.kappa = TRUE, kappa = 0.5, fix.lambda = TRUE, lambda = 1,
fix.psiA = TRUE, psiA = 0, fix.psiR = TRUE, psiR = 1,
cov.model = "matern", realisations,
method.lik = "ML", components = FALSE,
nospatial = TRUE, limits = pars.limits(),
print.pars = FALSE, messages, ...)
coords
and
data
as described next.
Typically an object of the class "geodata"
.
If not provided the arguments
coords
and data
must be provided coords
of the argument geodata
, if provided.data
of the argument geodata
, if provided.trend.spatial
for further details.
Defaults to "cte"
.DETAILS
below.fix.nugget = TRUE
) or should be
estimated (fix.nugget = FALSE
). Defaults to
FALSE
.fix.nugget = TRUE
otherwise
as the initial value for the minimisation algorithm. Defaults to zero.fix.kappa = TRUE
) or should be
estimated (fix.kappa = FALSE
). Defaults to TRUE
.fix.kappa = TRUE
otherwise as the initial value for the minimisation algorithm. Defaults to
$0.5$. This parameter is valid only if the covariance function is one
fix.lambda = TRUE
) or should be
be estimated (fix.lambda = FALSE
). Defaults to TRUE
.fix.lambda = TRUE
otherwise
as the initial value for the minimisation algorithm. Defaults to
$1$. Two particular cases are $\lambda = 1$
fix.psiA = TRUE
) or should
be estimated (fix.psiA = FALSE
). Defaults to
TRUE
.fix.psiA = TRUE
otherwise as the initial value for the minimisation algorithm.
Defaults to $0$. See
fix.psiR = TRUE
) or should be estimated (fix.psiR = FALSE
). Defaults to
TRUE
.fix.psiR = TRUE
otherwise as the initial value for the minimisation algorithm.
Defaults to $1$. See
cov.spatial
.
Defaults are equivalent to the exponential model.DETAILS
below and
documentation for as.geodata
."ML"
for maximum likelihood and "REML"
for
restricted maximum likelihood. Defaults to "ML"
.DETAILS
below for the model specification.TRUE
parameter estimates for the
model without spatial component are included in the output.pars.limits
is called to set
the limits.
See also LimitsTRUE
the parameters and the value
of the negative log-likelihood (up to a constant) are printed each
time the function to be minimised is called.control()
which controls the
behavior of the minimisation algorithm. For further details see documentation
for the minimisation fu"likGRF"
and "variomodel"
.
The function summary.likGRF
is used to print a summary
of the fitted model.
The object is a list with the following components:fix.nugget = FALSE
otherwise, a fixed
value."matern"
,
"powered.exponential"
, "cauchy"
or "gneiting.matern"
.fix.lambda = TRUE
otherwise the estimate value."ML"
(maximum likelihood)
or "REML"
(restricted maximum likelihood).likfit
.Two particular cases are $\lambda = 1$ which indicates no transformation and $\lambda = 0$ indicating the log-transformation. Numerical minimization
In general parameter estimation is performed numerically using the Rfunction optim
to minimise the
negative log-likelihood computed by the function negloglik.GRF
.
If the nugget, anisotropy ($\psi_A, \psi_R$),
smoothness ($\kappa$) and transformation ($\lambda$) parameters
are held fixed then the numerical minimisation can be reduced to
one-dimension and the function optimize
is used instead
of optim
. In this case initial values are irrelevant.
Limits
Lower and upper limits for parameter values can be
individually specified using the function link{pars.limits}
.
For example, including the following in the function call:
limits = pars.limits(phi=c(0, 10), lambda=c(-2.5, 2.5))
,
will change the limits for the parameters $\phi$ and $\lambda$.
Default values are used if the argument limits
is not provided.
There are internal reparametrisation depending on the options for
parameters to be estimated.
For instance for the common situation when fix.nugget=FALSE
the
minimisation is performed in a reduced
parameter space using
$\tau^2_{rel} = \frac{\tau^2}{\sigma^2}$.
In this case values of $\sigma^2$ and $\beta$
are then given by
analytical expressions which are function of the two parameters
remaining parameters and limits for these two parameters will be ignored.
Since parameter values are found by numerical optimization using
the function optim
,
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 optimizer. 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:
control()
options for the
optimiser internally Transformation
If the fix.lambda = FALSE
and nospatial = FALSE
the
Box-Cox parameter for the model without the spatial component is
obtained numerically, with log-likelihood computed by the function
boxcox.ns
.
Multiple initial values can be specified providing a $n
\time 2$ matrix for the argument ini.cov.pars
and/or
providing a vector for the values of the remaining model parameters.
In this case the log-likelihood is computed for all combinations of
the model parameters. The parameter set which maximises the
value of the log-likelihood is then used to start the
minimisation algorithm.
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.
The argument realisations allows replicated data to be used.
For instance, data collected at different times at least partially
the same locations
can be pooled together in the parameter estimation if independence is
assumed between time points.
The argument realisations
takes a vector indicating the
replication number (e.g. the times). The log-likelihoods are computed
for each replication and added together.
Notice that this assumes independence among the replications.
summary.likGRF
for summary of the results,
plot.variogram
, lines.variogram
and
lines.variomodel
for graphical output,
proflik
for computing profile likelihoods,
variofit
and for other estimation methods,
and optim
for the numerical minimisation function.data(s100)
ml <- likfit(s100, ini=c(0.5, 0.5), fix.nug = TRUE)
ml
summary(ml)
reml <- likfit(s100, ini=c(0.5, 0.5), fix.nug = TRUE, met = "REML")
summary(reml)
plot(variog(s100))
lines(ml)
lines(reml, lty = 2)
Run the code above in your browser using DataLab