Learn R Programming

sdetorus (version 0.1.10)

sigmaDiff: High-frequency estimate of the diffusion matrix

Description

Estimation of the \(\Sigma\) in the multivariate diffusion $$dX_t=b(X_t)dt+\Sigma dW_t$$ by the high-frequency estimate $$ \hat\Sigma = \frac{1}{N\Delta}\sum_{i=1}^N(X_i-X_{i-1})(X_i-X_{i-1})^T$$

Usage

sigmaDiff(data, delta, circular = TRUE, diagonal = FALSE,
  isotropic = FALSE)

Value

The estimated diffusion matrix of size c(p, p).

Arguments

data

vector or matrix of size c(N, p) containing the discretized process.

delta

discretization step.

circular

whether the process is circular or not.

diagonal, isotropic

enforce different constraints for the diffusion matrix.

Details

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

References

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. tools:::Rd_expr_doi("10.1007/s11222-017-9790-2")

Examples

Run this code
# 1D
x <- drop(euler1D(x0 = 0, alpha = 1, mu = 0, sigma = 1, N = 1000,
                  delta = 0.01))
sigmaDiff(x, delta = 0.01)

# 2D
x <- t(euler2D(x0 = rbind(c(pi, pi)), A = rbind(c(2, 1), c(1, 2)),
               mu = c(pi, pi), sigma = c(1, 1), N = 1000,
               delta = 0.01)[1, , ])
sigmaDiff(x, delta = 0.01)
sigmaDiff(x, delta = 0.01, circular = FALSE)
sigmaDiff(x, delta = 0.01, diagonal = TRUE)
sigmaDiff(x, delta = 0.01, isotropic = TRUE)

Run the code above in your browser using DataLab