Description Usage Arguments Details Value References Examples

Computation of the transition probability density (tpd) for a WN diffusion (with diagonal diffusion matrix)

1 |

`x` |
a matrix of dimension |

`x0` |
a matrix of dimension |

`t` |
a scalar containing the times separating |

`alpha` |
vector of length |

`mu` |
a vector of length |

`sigma` |
vector of length |

`rho` |
correlation coefficient of |

`maxK` |
maximum absolute value of the windings considered in the computation of the WN. |

`expTrc` |
truncation for exponential: |

The function checks for positive definiteness. If violated, it resets `A`

such that `solve(A) %*% Sigma`

is positive definite.

See Section 3.3 in García-Portugués et al. (2019) for details. See `dTpdWou`

for the general case (less efficient for 1D).

A vector of size `n`

containing the tpd evaluated at `x`

.

García-Portugués, E., Sørensen, M., Mardia, K. V. and Hamelryck, T. (2019) Langevin diffusions on the torus: estimation and applications. *Statistics and Computing*, 29(2):1–22. doi: 10.1007/s11222-017-9790-2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ```
set.seed(3455267)
alpha <- c(2, 1, -1)
sigma <- c(1.5, 2)
rho <- 0.9
Sigma <- diag(sigma^2)
Sigma[1, 2] <- Sigma[2, 1] <- rho * prod(sigma)
A <- alphaToA(alpha = alpha, sigma = sigma, rho = rho)
solve(A) %*% Sigma
mu <- c(pi, 0)
x <- t(euler2D(x0 = matrix(c(0, 0), nrow = 1), A = A, mu = mu,
sigma = sigma, N = 500, delta = 0.1)[1, , ])
sum(sapply(1:49, function(i) log(dTpdWou(x = matrix(x[i + 1, ], ncol = 2),
x0 = x[i, ], t = 1.5, A = A,
Sigma = Sigma, mu = mu))))
sum(log(dTpdWou2D(x = matrix(x[2:50, ], ncol = 2),
x0 = matrix(x[1:49, ], ncol = 2), t = 1.5, alpha = alpha,
mu = mu, sigma = sigma, rho = rho)))
lgrid <- 56
grid <- seq(-pi, pi, l = lgrid + 1)[-(lgrid + 1)]
image(grid, grid, matrix(dTpdWou(x = as.matrix(expand.grid(grid, grid)),
x0 = c(0, 0), t = 0.5, A = A,
Sigma = Sigma, mu = mu),
nrow = 56, ncol = 56), zlim = c(0, 0.25),
main = "dTpdWou")
image(grid, grid, matrix(dTpdWou2D(x = as.matrix(expand.grid(grid, grid)),
x0 = matrix(0, nrow = 56^2, ncol = 2),
t = 0.5, alpha = alpha, sigma = sigma,
mu = mu),
nrow = 56, ncol = 56), zlim = c(0, 0.25),
main = "dTpdWou2D")
x <- seq(-pi, pi, l = 100)
t <- 1
image(x, x, matrix(dTpdWou2D(x = as.matrix(expand.grid(x, x)),
x0 = matrix(rep(0, 100 * 2), nrow = 100 * 100,
ncol = 2),
t = t, alpha = alpha, mu = mu, sigma = sigma,
maxK = 2, expTrc = 30),
nrow = 100, ncol = 100),
zlim = c(0, 0.25))
points(stepAheadWn2D(x0 = rbind(c(0, 0)), delta = t / 500,
A = alphaToA(alpha = alpha, sigma = sigma), mu = mu,
sigma = sigma, N = 500, M = 1000, maxK = 2,
expTrc = 30))
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.