Learn R Programming

pomp (version 0.38-5)

probe: Probe a partially-observed Markov process.

Description

probe applies one or more probes to time series data and model simulations and compares the results. It can be used to diagnose goodness of fit and/or as the basis for probe-matching, a generalized method-of-moments approach to parameter estimation. probe.match calls an optimizer to adjust model parameters to do probe-matching, i.e., to minimize the discrepancy between simulated and actual data. This discrepancy is measured using the synthetic likelihood as defined by Wood (2010).

Usage

## S3 method for class 'pomp':
probe(object, probes, params, nsim, seed = NULL, \dots)
  ## S3 method for class 'probed.pomp':
probe(object, probes, params, nsim, seed = NULL, \dots)
  ## S3 method for class 'pomp':
probe.match(object, start, est = character(0),
              probes, weights,
              nsim, seed = NULL,
              method = c("subplex","Nelder-Mead","SANN","BFGS","sannbox"),
              verbose = getOption("verbose"), 
              eval.only = FALSE, fail.value = NA, ...)
  ## S3 method for class 'probed.pomp':
probe.match(object, start, est = character(0),
              probes, weights,
              nsim, seed = NULL,
              method = c("subplex","Nelder-Mead","SANN","BFGS","sannbox"),
              verbose = getOption("verbose"), 
              eval.only = FALSE, fail.value = NA, ...)
  ## S3 method for class 'probe.matched.pomp':
probe.match(object, start, est,
              probes, weights,
              nsim, seed = NULL,
              method = c("subplex","Nelder-Mead","SANN","BFGS","sannbox"),
              verbose = getOption("verbose"), 
              eval.only = FALSE, fail.value, ...)

Arguments

Value

  • probe returns an object of class probed.pomp. probed.pomp is derived from the pomp class and therefore have all the slots of pomp. In addition, a probed.pomp class has the following slots: [object Object],[object Object],[object Object],[object Object],[object Object]

    probe.match returns an object of class probe.matched.pomp, which is derived from class probed.pomp. probe.matched.pomp objects therefore have all the slots above plus the following: [object Object],[object Object],[object Object],[object Object]

Details

A call to probe results in the evaluation of the probe(s) in probes on the data. Additionally, nsim simulated data sets are generated (via a call to simulate) and the probe(s) are applied to each of these. The results of the probe computations on real and simulated data are stored in an object of class probed.pomp.

A call to probe.match results in an attempt to optimize the agreement between model and data, as measured by the specified probes, over the parameters named in est. The results, including coefficients of the fitted model and values of the probes for data and fitted-model simulations, are stored in an object of class probe.matched.pomp.

References

B. E. Kendall, C. J. Briggs, W. M. Murdoch, P. Turchin, S. P. Ellner, E. McCauley, R. M. Nisbet, S. N. Wood Why do populations cycle? A synthesis of statistical and mechanistic modeling approaches, Ecology, 80:1789--1805, 1999.

S. N. Wood Statistical inference for noisy nonlinear ecological dynamic systems, Nature, 466: 1102--1104, 2010.

See Also

pomp-class, pomp-methods, basic.probes, probe.match

Examples

Run this code
data(ou2)
good <- probe(
              ou2,
              probes=list(
                y1.mean=probe.mean(var="y1"),
                y2.mean=probe.mean(var="y2"),
                y1.sd=probe.sd(var="y1"),
                y2.sd=probe.sd(var="y2"),
                extra=function(x)max(x["y1",])
                ),
              nsim=500
              )
summary(good)
plot(good)

bad <- probe(
             ou2,
             params=c(alpha.1=0.1,alpha.4=0.2,x1.0=0,x2.0=0,
                      alpha.2=-0.5,alpha.3=0.3,
                      sigma.1=3,sigma.2=-0.5,sigma.3=2,
                      tau=1),
             probes=list(
               y1.mean=probe.mean(var="y1"),
               y2.mean=probe.mean(var="y2"),
               y1.sd=probe.sd(var="y1"),
               y2.sd=probe.sd(var="y2"),
               extra=function(x)range(x["y1",])
               ),
             nsim=500
             )
summary(bad)
plot(bad)

Run the code above in your browser using DataLab