MOL.density: Approximate the Transition Density of a Scalar Diffusion with...

Description Usage Arguments Value Interface Warning Note Author(s) References See Also Examples

Description

For scalar diffusions with drift mu=function(X,t){} and diffusion sig=function(X,t){}, MOL.density approximates the transition density of a scalar diffusion on a lattice [xlims[1],xlims[2]] x [s,t] with N spatial nodes and time discretization delt, via the method of lines. The method of lines approximates the solution of the Fokker-Planck equation by an N-dimensional system of ordinary differential equations (ODEs) evaluated on [s,t].

Usage

1
MOL.density(Xs, s, t, xlims, N = 31, delt, mu, sig, final.only = FALSE)

Arguments

Xs

Starting/Initial value for the diffusion process (see note [1] and warning [1]).

s

Starting time for the diffusion process.

t

Value (>s) giving the terminal point for the transition horizon (the final time at which to evaluate the transition density).

xlims

Limits for the spatial nodes of the lattice. These limits should be wide enough for the transition density to be negligibly small at the endpoints (see note [2]).

N

The number of nodes in the spatial domain at which to evaluate the transitional density. Increase N for more accurate approximations (see note [3] and warning [2]).

delt

Step size for the time domain of the lattice (see note [4]).

mu

Optional (if drift and diffusion coefficients are already defined) arguments giving the drift and diffusion coefficients as text expressions (See Interface below).

sig

Optional (if drift and diffusion coefficients are already defined) arguments giving the drift and diffusion coefficients as text expressions (See Interface below).

final.only

Should the transition density on the entire lattice be returned (FALSE) or only the at the terminal point of the transition horizon t (TRUE). Default = FALSE.

Value

density

Matrix containing the density approximation (vector if final.only = TRUE).

Xt

Vector of spatial values at which approximation was carried out.

time

Vector of time nodes at which the approximation was evaluated.

Interface

MOL.density uses a function-input interface whereby the drift and diffusion components of the stochastic differential equation (SDE)

dX_t = mu(X_t, t)dt+sigma(X_t, t)dW_t,

are defined as R-functions in the current workspace. That is by defining the drift and diffusion components

mu=function(X,t){some expression i.t.o. X and t}

sig=function(X,t){some expression i.t.o. X and t}

further analysis may be conducted by calling the function MOL.density().

Warning

Warning [1]: Note that if the lattice is shifted, degeneracies may occur for certain drift/volatility specifications if the shifted lattice moves into non-nonsensical values of the drift/volatility functions' domains.

Warning [2]: Although increasing the spatial resolution of the lattice by increasing N improves approximations, instabilities will occur if delt is not sufficiently small. This tends to manifest as jagged/spiked solutions that oscillate between positive and negative values.

Note

Note [1]: Although the spatial limits of the lattice is defined by the user using xlims, if the initial value Xs does not fall on one of the lattice nodes, then the lattice is shifted accordingly.

Note [2]: The approximation assumes that the entire density of the process falls on a finite interval. Thus the algorithm may breakdown for certain problems. Depending on the parameters of the process, the limits may be very far apart or near. Some experimentation may be required. Otherwise, set autofind = TRUE to find useful limits. Note also that larger N may be required for wider limits.

Note [3]: Increasing N will likely require smaller delt, thus increasing computation time. For some problems, slight increases in N will require much smaller delt.

Note [4]: delt is used as the step size for a 10(8)-th order Runge-Kutta method for solving the resulting system of ODEs. Note again the inter-play between N and delt (see note [3]).

Author(s)

Etienne A.D. Pienaar etiennead@gmail.com

References

Hamdi, S., Schiesser, W. E. and Griffiths, G. W. 2007 Method of lines. Scholarpedia, 2(7):2859. Revision #124335.

Feagin, T. 2007 A tenth-order Runge-Kutta method with error estimate. In Proceedings of the IAENG Conf. on Scientifc Computing.

See Also

MOL.passage, BiMOL.density.

Examples

1
2
3
4
5
6
7
8
#===============================================================================

 # For detailed notes and examples on how to use the MOL.density() function, see
 # the following vignette:

 RShowDoc('Part_2_Transition_Densities',type='html','DiffusionRimp')

#===============================================================================

eta21/DiffusionRimp documentation built on May 16, 2019, 8:54 a.m.