nimDerivs: Nimble Derivatives

View source: R/nimbleFunction_Rderivs.R

nimDerivsR Documentation

Nimble Derivatives

Description

Computes the value, 1st order (Jacobian), and 2nd order (Hessian) derivatives of a given nimbleFunction method and/or model log probabilities

Usage

nimDerivs(call = NA, wrt = NULL, order = nimC(0, 1, 2), model = NA, ...)

Arguments

call

a call to a nimbleFunction method with arguments included. Can also be a call to model$calculate(nodes), or to calculate(model, nodes).

wrt

a character vector of either: names of function arguments (if taking derivatives of a nimbleFunction method), or node names (if taking derivatives of model$calculate(nodes)) to take derivatives with respect to. If left empty, derivatives will be taken with respect to all arguments to nimFxn.

order

an integer vector with values within the set {0, 1, 2}, corresponding to whether the function value, Jacobian, and Hessian should be returned respectively. Defaults to c(0, 1, 2).

model

(optional) for derivatives of a nimbleFunction that involves model. calculations, the uncompiled model that is used. This is needed in order to be able to correctly restore values into the model when order does not include 0 (or in all cases when double-taping).

...

additional arguments intended for internal use only.

Details

Derivatives for uncompiled nimbleFunctions are calculated using the numDeriv package. If this package is not installed, an error will be issued. Derivatives for matrix valued arguments will be returned in column-major order.

Value

a nimbleList with elements value, jacobian, and hessian.

Examples


## Not run: 
model <- nimbleModel(code = ...)
calcDerivs <- nimDerivs(model$calculate(model$getDependencies('x')),
 wrt = 'x')

## End(Not run)


nimble documentation built on Sept. 11, 2024, 7:10 p.m.