A spatial interaction function for use in twinstim
can be constructed via the siaf
function.
It checks the supplied function elements, assigns defaults for
missing arguments, and returns all checked arguments in a list.
However, for standard applications it is much easier to use one of the
pre-defined spatial interaction functions, e.g.,
siaf.gaussian
.
siaf(f, F, Fcircle, effRange, deriv, Deriv, simulate, npars,
validpars = NULL)
list of checked arguments.
the spatial interaction function. It must accept
two arguments, the first one being a (2-column) coordinate matrix, the
second one a parameter vector. For marked twinstim
, it must
accept the type of the event (integer code) as its third argument
(either a single type for all locations or separate types for each
location).
function computing the integral of \(f(s)\) (passed as
second argument) over a polygonal "owin"
domain (first argument).
The third and fourth argument are
the parameter vector and the (single) type, respectively.
There may be additional arguments, which can then be specified in
the control.siaf$F
argument list of twinstim
. If the F
function is missing, a general default (polyCub
)
will be used, with extra arguments method
(default: "SV"
)
and corresponding accuracy parameters.
optional function for fast calculation of the
(two-dimensional) integral of \(f(s)\) over a circle with radius
r
(first argument). Further arguments are as for f
. It
must not be vectorized (will always be called with single radius
and a single type). If this function is specified, integration of
the siaf
over the spatial influence region of an event will
be faster if the region is actually circular. This is the case if
the event is located at least a distance eps.s
from the border
of the observation region W
, or if the distance to the border
is larger than the effective integration range (if specified, see
effRange
below).
optional function returning the “effective”
range of \(f(s)\) for the given set of parameters (the first and
only argument) such that the circle with radius effRange
contains the numerically essential proportion of the
integral mass. For the Gaussian kernel the default is
function (logsd) 6*exp(logsd)
. The return value must be a
vector of length nTypes
(effective range for each type). This
function is only used if Fcircle
is also specified.
optional derivative of \(f(s)\) with respect to
the parameters. It takes the same arguments as f
but
returns a matrix with as many rows as there were coordinates in the
input and npars
columns. This derivative is necessary for the
calculation of the score function in twinstim()
, which is
advantageous for the numerical log-likelihood maximization.
function computing the integral of deriv
(passed as
second argument) over a polygonal "owin"
domain (first
argument). The return value is thus a vector of length npars
.
The third argument is the parameter vector and the fourth argument
is a (single) type and must be named type
.
There may be additional arguments, which can then be specified in
the control.siaf$Deriv
argument list of twinstim
. If the
Deriv
function is missing, a general default
(polyCub
) will be used, with extra arguments
method
(default: "SV"
) and corresponding accuracy parameters.
optional function returning a sample drawn from the
spatial kernel (only required for the simulation of twinstim
models). Its first argument is the size of the sample to
generate, next the parameter vector, an optional single event type,
and an optional upper bound for the radius within which to simulate
points. The function must return a two-column matrix of the
sampled locations.
Note that the simulation method actually samples only one location
at a time, thus it is sufficient to have a working
function(n=1, pars, type, ub)
.
the number of parameters of the spatial interaction
function f
(i.e. the length of its second argument).
optional function taking one argument, the parameter vector, indicating if it
is valid. This approach to specify parameter constraints is rarely
needed, because usual box-constrained parameters can be taken into
account by using L-BFGS-B as the optimization method in
twinstim
(with arguments lower
and upper
), and
positivity constraints by using log-parametrizations.
This component is not necessary (and ignored) if npars == 0
.
Sebastian Meyer
siaf.gaussian
for a pre-defined spatial interaction
function, and tiaf
for the temporal interaction function.