Learn R Programming

Langevin (version 1.3.3)

Langevin1D: Calculate the Drift and Diffusion of one-dimensional stochastic processes

Description

Langevin1D calculates the Drift and Diffusion vectors (with errors) for a given time series.

Usage

Langevin1D(
  data,
  bins,
  steps,
  sf = ifelse(is.ts(data), frequency(data), 1),
  bin_min = 100,
  reqThreads = -1,
  kernel = FALSE,
  h
)

Value

Langevin1D returns a list with thirteen (six if kernel

is TRUE) components:

D1

a vector of the Drift coefficient for each bin.

eD1

a vector of the error of the Drift coefficient for each bin.

D2

a vector of the Diffusion coefficient for each bin.

eD2

a vector of the error of the Diffusion coefficient for each bin.

D4

a vector of the fourth Kramers-Moyal coefficient for each bin.

mean_bin

a vector of the mean value per bin.

density

a vector of the number of events per bin. If kernel is FALSE.

M1

a matrix of the first conditional moment for each \(\tau\). Rows correspond to bin, columns to \(\tau\). If kernel is FALSE.

eM1

a matrix of the error of the first conditional moment for each \(\tau\). Rows correspond to bin, columns to \(\tau\). If kernel is FALSE.

M2

a matrix of the second conditional moment for each \(\tau\). Rows correspond to bin, columns to \(\tau\). If kernel is FALSE.

eM2

a matrix of the error of the second conditional moment for each \(\tau\). Rows correspond to bin, columns to \(\tau\). If kernel is FALSE.

M4

a matrix of the fourth conditional moment for each \(\tau\). Rows correspond to bin, columns to \(\tau\). If kernel is FALSE.

U

a vector of the bin borders. If kernel is FALSE.

Arguments

data

a vector containing the time series or a time-series object.

bins

a scalar denoting the number of bins to calculate the conditional moments on.

steps

a vector giving the \(\tau\) steps to calculate the conditional moments (in samples (=\(\tau * sf\))). Only used if kernel is FALSE.

sf

a scalar denoting the sampling frequency (optional if data is a time-series object).

bin_min

a scalar denoting the minimal number of events per bin. Defaults to 100.

reqThreads

a scalar denoting how many threads to use. Defaults to -1 which means all available cores. Only used if kernel is FALSE.

kernel

a logical denoting if the kernel based Nadaraya-Watson estimator should be used to calculate drift and diffusion vectors.

h

a scalar denoting the bandwidth of the data. Defaults to Scott's variation of Silverman's rule of thumb. Only used if kernel is TRUE.

Author

Philip Rinn

See Also

Langevin2D

Examples

Run this code

# Set number of bins, steps and the sampling frequency
bins <- 20
steps <- c(1:5)
sf <- 1000

#### Linear drift, constant diffusion

# Generate a time series with linear D^1 = -x and constant D^2 = 1
x <- timeseries1D(N = 1e6, d11 = -1, d20 = 1, sf = sf)
# Do the analysis
est <- Langevin1D(data = x, bins = bins, steps = steps, sf = sf)
# Plot the result and add the theoretical expectation as red line
plot(est$mean_bin, est$D1)
lines(est$mean_bin, -est$mean_bin, col = "red")
plot(est$mean_bin, est$D2)
abline(h = 1, col = "red")

#### Cubic drift, constant diffusion

# Generate a time series with cubic D^1 = x - x^3 and constant D^2 = 1
x <- timeseries1D(N = 1e6, d13 = -1, d11 = 1, d20 = 1, sf = sf)
# Do the analysis
est <- Langevin1D(data = x, bins = bins, steps = steps, sf = sf)
# Plot the result and add the theoretical expectation as red line
plot(est$mean_bin, est$D1)
lines(est$mean_bin, est$mean_bin - est$mean_bin^3, col = "red")
plot(est$mean_bin, est$D2)
abline(h = 1, col = "red")

Run the code above in your browser using DataLab