ibpf | R Documentation |
An iterated block particle filter, for both shared and unit-specific parameters. We require that the spatPomp has been constructed to have a unit-specific parameter "thetau" for unit u corresponding to an estimated parameter "theta", whether theta is shared or unit-specific. This permits IBPF to implement a spatiotemporal random walk to estimate theta. We require that rw.sd is positive for, and only for, all parameters of the form "thetau" if "theta" is listed in sharedParNames or unitParNames.
## S4 method for signature 'missing'
ibpf(data, ...)
## S4 method for signature 'ANY'
ibpf(data, ...)
## S4 method for signature 'spatPomp'
ibpf(
data,
Nbpf,
Np,
rw.sd,
sharedParNames,
unitParNames,
cooling.type = "geometric",
cooling.fraction.50,
block_size,
block_list,
spat_regression,
...,
verbose = getOption("spatPomp_verbose", FALSE)
)
## S4 method for signature 'ibpfd_spatPomp'
ibpf(
data,
Nbpf,
Np,
rw.sd,
sharedParNames,
unitParNames,
cooling.type = "geometric",
cooling.fraction.50,
block_size,
block_list,
spat_regression,
...,
verbose = getOption("spatPomp_verbose", FALSE)
)
## S4 method for signature 'bpfilterd_spatPomp'
ibpf(
data,
Nbpf,
Np,
rw.sd,
sharedParNames,
unitParNames,
cooling.type = "geometric",
cooling.fraction.50,
block_size,
block_list,
spat_regression,
...,
verbose = getOption("spatPomp_verbose", FALSE)
)
data |
either a data frame holding the time series data,
or an object of class ‘pomp’,
i.e., the output of another pomp calculation.
Internally, |
... |
If a |
Nbpf |
the number of iterations of perturbed BPF. |
Np |
The number of particles used within each replicate for the adapted simulations. |
rw.sd |
specification of the magnitude of the random-walk perturbations that will be applied to some or all model parameters.
Parameters that are to be estimated should have positive perturbations specified here.
The specification is given using the ifelse(time==time[1],s,0). Likewise, ifelse(time==time[lag],s,0). See below for some examples. The perturbations that are applied are normally distributed with the specified s.d. If parameter transformations have been supplied, then the perturbations are applied on the transformed (estimation) scale. |
sharedParNames |
estimated parameters that are equal for each unit. |
unitParNames |
estimated parameters that are different for each unit. |
cooling.type , cooling.fraction.50 |
specifications for the cooling schedule,
i.e., the manner and rate with which the intensity of the parameter perturbations is reduced with successive filtering iterations.
|
block_size |
The number of spatial units per block. If this is provided, the method subdivides units approximately evenly
into blocks with size |
block_list |
List that specifies an exact partition of the spatial units. Each partition element, or block, is an integer vector of neighboring units. |
spat_regression |
fraction of each extended parameter regressed toward the unit mean. Not required when all parameters are unit-specific. |
verbose |
logical; if |
Upon successful completion, ibpf
returns an object of class
‘ibpfd_spatPomp’.
The following methods are available for such an object:
coef
gives the Monte Carlo estimate of the maximum likelihood.
Edward L. Ionides
2022
likelihood evaluation algorithms: girf()
, enkf()
, bpfilter()
, abf()
, abfir()
Other likelihood maximization algorithms:
ienkf()
,
igirf()
,
iubf()
# Complete examples are provided in the package tests
## Not run:
# Create a simulation of a Brownian motion, for an extended model with
# unit-specific parameters for all estimated, even if the parameter
# takes the same shared value for each unit.
U <- 4
b2 <- bm2(U=U,N=5,unit_specific_names="rho")
# Run ibpf with two blocks of two units each. estimating rho as a
# shared parameter with all other parameters being fixed.
b2_ibpf <- ibpf(b2,
sharedParNames="rho",
unitParNames=NULL,
Nbpf=5,
spat_regression=0.1,
Np=50,
rw.sd=do.call(rw_sd,setNames(rep(list(0.01),times=U),paste0("rho",1:U))),
cooling.fraction.50=0.5,
block_size=2
)
# Get a likelihood estimate
logLik(b2_ibpf)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.