sigmaDiff: High-frequency estimate of the diffusion matrix

View source: R/mle.R

sigmaDiffR Documentation

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)

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.

Value

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

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. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/s11222-017-9790-2")}

Examples

# 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)

egarpor/sdetorus documentation built on March 4, 2024, 1:23 a.m.