# Example systems

## Continuous

CausalityTools.ExampleSystems.mediated_linkMethod
mediated_link(;u₀ = rand(9), ωx = 1, ωy = 1.015, ωz = 0.985,
k = 0.15, l = 0.2, m = 10.0,
c = 0.06) → ContinuousDynamicalSystem

Initialise a three-subsystem dynamical system where X and Y are driven by Z. At the default value of the coupling constant c = 0.06, the responses X and Y are already synchronized to the driver Z.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} dx_1 &= -\omega_x x_2 - x_3 + c*(z_1 - x_1) \\ dx_2 &= \omega_x x_1 + k*x_2 \\ dx_3 &= l + x_3(x_1 - m) \\ dy_1 &= -\omega_y y_2 - y_3 + c*(z_1 - y_1) \\ dy_2 &= \omega_y y_1 + k*y_2 \\ dy_3 &= l + y_3(y_1 - m) \\ dz_1 &= -\omega_z z_2 - z_3 \\ dz_2 &= \omega_z z_1 + k*z_2 \\ dz_3 &= l + z_3(z_1 - m) \end{aligned}

References

1. Krakovská, Anna, et al. "Comparison of six methods for the detection of causality in a bivariate time series." Physical Review E 97.4 (2018): 042207
source

### Two bidirectionally coupled 3D Lorenz systems

CausalityTools.ExampleSystems.lorenz_lorenz_bidirFunction
lorenz_lorenz_bidir(; u0 = rand(6),
c_xy = 0.2, c_yx = 0.2,
a₁ = 10, a₂ = 28, a₃ = 8/3,
b₁ = 10, b₂ = 28, b₃ = 9/3) → ContinuousDynamicalSystem

Initialise a bidirectionally coupled Lorenz-Lorenz system, where each subsystem is a 3D Lorenz system [1]. Default values for the parameters a₁, a₂, a₃, b₁, b₂, b₃ are as in [1].

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= -a_1 (x_1 - x_2) + c_{yx}(y_1 - x_1) \\ \dot{x_2} &= -x_1 x_3 + a_2 x_1 - x_2 \\ \dot{x_3} &= x_1 x_2 - a_3 x_3 \\ \dot{y_1} &= -b_1 (y_1 - y_2) + c_{xy} (x_1 - y_1) \\ \dot{y_2} &= -y_1 y_3 + b_2 y_1 - y_2 \\ \dot{y_3} &= y_1 y_2 - b_3 y_3 \end{aligned}

References

1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.
source

### Two bidirectionally coupled 3D Lorenz systems forced by another 3D Lorenz system

CausalityTools.ExampleSystems.lorenz_lorenz_lorenz_bidir_forcedFunction
lorenz_lorenz_lorenz_bidir_forced(; u0 = rand(9),
c_xy = 0.1, c_yx = 0.1,
c_zx = 0.05, c_zy = 0.05,
a₁ = 10, a₂ = 28, a₃ = 8/3,
b₁ = 10, b₂ = 28, b₃ = 8/3,
c₁ = 10, c₂ = 28, c₃ = 8/3)

Initialise a system consisting of two bidirectionally coupled 3D Lorenz systems forced by an external 3D Lorenz system, giving a 9D system.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= - a_1 (x_1 - x_2) + c_{yx}(y_1 - x_1) + c_{zx}(z_1 - x_1) \\ \dot{x_2} &= - x_1 x_3 + a_2 x_1 - x_2 \\ \dot{x_3} &= x_1 x_2 - a_3 x_3 \\ \dot{y_1} &= -b_1 (y_1 - y_2) + c_{xy} (x_1 - y_1) + c_{zy}(z_1 - y_1) \\ \dot{y_2} &= - y_1 y_3 + b_2 y_1 - y_2 \\ \dot{y_3} &= y_1 y_2 - b_3 y_3 \\ \dot{z_1} &= - c_1 (z_1 - z_2) \\ \dot{z_2} &= - z_1 z_3 + c_2 z_1 - z_2 \\ \dot{z_3} &= z_1 z_2 - c_3 z_3 \end{aligned}

References

1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.
source

### Three transitively connected 3D Lorenz systems

CausalityTools.ExampleSystems.lorenz_lorenz_lorenz_transitiveFunction
lorenz_lorenz_lorenz_transitive(;u₀=rand(9),
σ₁ = 10.0, σ₂ = 10.0, σ₃ = 10.0,
ρ₁ = 28.0, ρ₂ = 28.0, ρ₃ = 28.0,
β₁ = 8/3,  β₂ = 8/3,  β₃ = 8.3,
c₁₂ = 1.0, c₂₃ = 1.0) → ContinuousDynamicalSystem

Initalise a dynamical system consisting of three coupled Lorenz attractors with a transitive causality chain where X₁ → X₂ and X₂ → X₃. In total, the three 3D-subsystems create a 9-dimensional dynamical system.

The strength of the forcing X₁ → X₂ is controlled by the parameter c₁, and the forcing from X₂ → X₃ by c₂. The remaining parameters are the usual parameters for the Lorenz system, where the subscript i refers to the subsystem Xᵢ.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= \sigma_1(y_1 - x_1) \\ \dot{y_1} &= \rho_1 x_1 - y_1 - x_1 z_1 \\ \dot{z_1} &= x_1 y_1 - \beta_1 z_1 \\ \dot{x_2} &= \sigma_2 (y_2 - x_2) + c_{12}(x_1 - x_2) \\ \dot{y_2} &= \rho_2 x_2 - y_2 - x_2 z_2 \\ \dot{z_2} &= x_2 y_2 - \beta_2 z_2 \\ \dot{x_3} &= \sigma_3 (y_3 - x_3) + c_{23} (x_2 - x_3) \\ \dot{y_3} &= \rho_3 x_3 - y_3 - x_3 z_3 \\ \dot{z_3} &= x_3 y_3 - \beta_3 z_3 \end{aligned}

Usage in literature

This system was studied by Papana et al. (2013) for coupling strengths $c_{12} = 0, 1, 3, 5$ and $c_{23} = 0, 1, 3, 5$.

References

1. Papana et al., Simulation Study of Direct Causality Measures in Multivariate Time Series. Entropy 2013, 15(7), 2635-2661; doi:10.3390/e15072635
source

### Two bidirectionally coupled 3D Rössler systems

CausalityTools.ExampleSystems.rossler_rossler_bidirFunction
rossler_rossler_bidir(; u0 = rand(6),
ω₁ = 1.015, ω₂ = 0.985,
c_xy = 0.1, c_yx = 0.1,
a₁ = 0.15, a₂ = 0.2, a₃ = 10,
b₁ = 0.15, b₂ = 0.2, b₃ = 10)

Initialise a system of two bidirectionally coupled 3D Rössler systems. This system has been modified from [1] to allow other parameterisations, but default parameters are as in [1].

The $X$ and $Y$ subsystems are mostly synchronized for c_xy > 0.1 or c_yx > 0.1.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= -\omega_1(x_2 + x_3) + c_{yx}(y_1 - x_1) \\ \dot{x_2} &= \omega_1 x_1 + a_1 x_2 \\ \dot{x_3} &= a_2 + x_3 (x_1 - a_3) \\ \dot{y_1} &= -\omega_2 (y_2 + y_3) + c_{xy}(x_1 - y_1) \\ \dot{y_2} &= \omega_2 y_1 + b_1 y_2 \\ \dot{y_3} &= b_2 + y_3 (y_1 - b_3) \end{aligned}

References

1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.
source

### Two bidirectionally coupled 3D Rössler systems forced by another 3D Rössler system

CausalityTools.ExampleSystems.rossler_rossler_rossler_bidir_forcedFunction
rossler_rossler_rossler_bidir_forced(; u0 = rand(9),
ω₁ = 1.015, ω₂ = 0.985, ω₃ = 0.95,
c_xy = 0.1, c_yx = 0.1,
c_zx = 0.05, c_zy = 0.05,
a₁ = 0.15, a₂ = 0.2, a₃ = 10,
b₁ = 0.15, b₂ = 0.2, b₃ = 10,
c₁ = 0.15, c₂ = 0.2, c₃ = 10)

Equations of motion for a system consisting of three coupled 3D Rössler systems ($X$, $Y$, $Z$), giving a 9D system [1]. The external system $Z$ influences both $X$ and $Y$ (controlled by c_zx and c_zy). Simultaneously, the subsystems $X$ and $Y$ bidirectionally influences each other (controlled by c_xy and c_yx).

The $X$ and $Y$ subsystems are mostly synchronized for c_xy > 0.1 or c_yx > 0.1.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= -\omega_1 (x_2 + x_3) + c_{yx}(y_1 - x_1) + c_{zx}(z_1 - x_1) \\ \dot{x_2} &= \omega_1 x_1 + a_1 x_2 \\ \dot{x_3} &= a_2 + x_3 (x_1 - a_3) \\ \dot{y_1} &= -\omega_1 (y_2 + y_3) + c_{xy}(x_1 - y_1) + c_{zy}(z_1 - y_1) \\ \dot{x_2} &= \omega_2 y_1 + b_1 y_2 \\ \dot{x_3} &= b_2 + x_3 (y_1 - b_3) \\ \dot{y_1} &= -\omega_2 (z_2 + z_3) \\ \dot{x_2} &= \omega_2 z_1 + c_1 z_2 \\ \dot{x_3} &= c_2 + z_3 (z_1 - c_3) \end{aligned}

References

1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.
source

### Unidirectonal forcing from a 3D Rössler system to a 3D Lorenz system

CausalityTools.ExampleSystems.rossler_lorenzFunction
rossler_lorenz(;u₀ = rand(6), a₁ = -6, a₂ = 6, a₃ = 2.0,
b₁ = 10, b₂ = 28, b₃ = 8/3, c_xy = 1) → ContinuousDynamicalSystem

Initialise a Rössler-Lorenz system consisting of two independent 3D subsystems: one Rössler system and one Lorenz system. They are coupled such that the second component (x₂) of the Rössler system unidirectionally forces the second component (y₂) of the Lorenz system.

The parameter c_xy controls the coupling strength. The implementation here also allows for tuning the parameters of each subsystem by introducing the constants a₁, a₂, a₃, b₁, b₂, b₃. Default values for these parameters are as in [1].

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot x_1 &= a_1(x_2 + x_3) \\ \dot x_2 &= a_2(x_1 + 0.2x_2) \\ \dot x_3 &= a_2(0.2 + x_3(x_1 - a_3)) \\ \dot y_1 &= b_1(y_2 - y_1) \\ \dot y_2 &= y_1(b_2 - y_3) - y_2 +c_{xy}(x_2)^2 \\ \dot y_3 &= y_1 y_2 - b_3y_3 \end{aligned}

with the coupling constant $c_{xy} \geq 0$.

References

1. Krakovská, Anna, et al. "Comparison of six methods for the detection of causality in a bivariate time series." Physical Review E 97.4 (2018):042207. https://journals.aps.org/pre/abstract/10.1103/PhysRevE.97.042207
source

### N-scroll Chua attractors

CausalityTools.ExampleSystems.chuacircuit_nscroll_sineFunction
chuacircuit_nscroll_sine(;u₀ = [0.0, 0.0, 0.28695],
α = 10.814, β = 14, γ = 0, a = 1.3, b = 0.11, c = 2,
σx = 0.0, σy = 0.0, σz = 0.0)

Initialise an adjusted Chua system giving rise to n-scroll attractors [1].

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x} = \alpha (y - fx) + \eta x \\ \dot{y} = x - y + z + \eta y \\ \dot{z} = -\beta y - \gamma z + \eta z \end{aligned}

where $\eta x$, $\eta z$, and $\eta z$ are drawn independently from normal distributions with zero mean and standard deviations σx, σy and σz at each iteration.

$fx$ is given by the following conditions:

n::Int = c + 1

if x >= 2*a*c
fx = (b*pi/2*a)*(x - 2*a*c)
elseif -2*a*c < x < 2*a*c
d = ifelse(isodd(n), pi, 0)
fx = -b*sin((pi*x/2*a) + d)
elseif x <= -2*a*c
fx = (b*pi/2*a)*(x + 2*a*c)
end

References

1. Tang, Wallace KS, et al. "Generation of n-scroll attractors via sine function." IEEE Transactions on Circuits and Systems I: Fundamental Theory and Applications 48.11 (2001): 1369-1372.
source

### Repressilator

CausalityTools.ExampleSystems.repressilatorFunction
repressilator(;u₀ = rand(6), α = 10.0, α₀ = 0.0, β = 100.0,
n = 2) → ContinuousDynamicalSystem

A six-dimensional repressilator (or repression-driven oscillator) from Elowitz & Leibler (2000)[Elowitz2000]. The equations are scaled to be non-dimensional.

Used in Sun & Bollt (2014) to study the performance of the causation entropy algorithm.

source

## Discrete

### Ulam map

CausalityTools.ExampleSystems.ulamFunction
ulam(D::Int = 10; u₀ = rand(D), ε::Real = 0.10) → DiscreteDynamicalSystem

A lattice of D unidirectionally coupled ulam maps[Schreiber2000] defined as

$$$x^{m}_{t+1} = f(\epsilon x^{m-1}_{t} + (1 - \epsilon) x_{t}^{m}),$$$

where $m = 1, 2, \ldots, D$ and $f(x) = 2 - x^2$. In this system, information transfer happens only in the direction of increasing $m$.

source

### Autoregressive order one 2D system

CausalityTools.ExampleSystems.ar1_unidirFunction
ar1_unidir(u₀, a₁ = 0.90693, b₁ = 0.40693, c_xy = 0.5,
σ = 0.40662) → DiscreteDynamicalSystem

A bivariate, order one autoregressive model, where $x \to y$ [1].

Equations of motion

\begin{aligned} x(t+1) &= a_1 x(t) + \xi_{1} \\ y(t+1) &= b_1 y(t) - c_{xy} x + \xi_{2}, \end{aligned}

where $\xi_{1}$ and $\xi_{2}$ are drawn from normal distributions with zero mean and standard deviation σ at each iteration.

References

1. Paluš, M., Krakovská, A., Jakubík, J., & Chvosteková, M. (2018). Causality, dynamical systems and the arrow of time. Chaos: An Interdisciplinary Journal of Nonlinear Science, 28(7), 075307. http://doi.org/10.1063/1.5019944
source

### Nonlinear 3D system with nonlinear coupling

CausalityTools.ExampleSystems.nonlinear3dFunction
nonlinear3d(;u₀ = rand(3),
σ₁ = 1.0, σ₂ = 1.0, σ₃ = 1.0,
a₁ = 3.4, a₂ = 3.4, a₃ = 3.4,
b₁ = 0.4, b₂ = 0.4, b₃ = 0.4,
c₁₂ = 0.5, c₂₃ = 0.3, c₁₃ = 0.5) → DiscreteDynamicalSystem

A 3d nonlinear system with nonlinear couplings $x_1 \to x_2$, $x_2 \to x_3$ and $x_1 \to x_3$. Modified from [1].

Equations of motion

The equations of motion are

\begin{aligned} x_1(t+1) &= a_1 x_1 (1-x_1(t))^2 e^{-x_2(t)^2} + 0.4 \xi_{1}(t) \\ x_2(t+1) &= a_1 x_2 (1-x_2(t))^2 e^{-x_2(t)^2} + 0.4 \xi_{2}(t) + b x_1 x_2 \\ x_3(t+1) &= a_3 x_3 (1-x_3(t))^2 e^{-x_3(t)^2} + 0.4 \xi_{3}(t) + c x_{2}(t) + d x_{1}(t)^2. \end{aligned}

References

1. Gourévitch, B., Le Bouquin-Jeannès, R., & Faucon, G. (2006). Linear and nonlinear causality between signals: methods, examples and neurophysiological applications. Biological Cybernetics, 95(4), 349–369.
source

### Unidirectionally coupled 2D logistic maps

CausalityTools.ExampleSystems.logistic2_unidirFunction
logistic2(;u₀ = rand(2), c_xy = 0.1, σ = 0.05,
r₁ = 3.78, r₂ = 3.66) → DiscreteDynamicalSystem

Initialise a system consisting of two coupled logistic maps where X unidirectionally influences Y. By default, the parameters r₁ and r₂ are set to values yielding chaotic behaviour.

Equations of motion

The equations of motion are

\begin{aligned} x(t+1) &= r_1 x(t)(1 - x(t)) \\ y(t+1) &= r_2 f(x,y)(1 - f(x,y)), \end{aligned}

with

\begin{aligned} f(x,y) = \dfrac{y + \frac{c_{xy}(x \xi )}{2}}{1 + \frac{c_{xy}}{2}(1+ \sigma )} \end{aligned}

The parameter c_xy controls how strong the dynamical forcing is. If σ > 0, dynamical noise masking the influence of x on y equivalent to $\sigma \cdot \xi$ is added at each iteration. Here,$\xi$ is a draw from a flat distribution on $[0, 1]$. Thus, setting σ = 0.05 is equivalent to add dynamical noise corresponding to a maximum of $5 \%$ of the possible range of values of the logistic map.

References

1. Diego, David, Kristian Agasøster Haaga, and Bjarte Hannisdal. "Transfer entropy computation using the Perron-Frobenius operator." Physical Review E 99.4 (2019): 042212.
source

### Bidirectionally coupled 2D logistic maps

CausalityTools.ExampleSystems.logistic2_bidirFunction
logistic2_bidir(;u₀ = rand(2), c_xy = 0.1, c_yx = 0.1,
r₁ = 3.78, r₂ = 3.66, σ_xy = 0.05, σ_yx = 0.05)

A bidirectional logistic model for the chaotic population dynamics of two interacting species [1].

Equations of motion

The equations of motion are

\begin{align} x(t+1) &= r_1 f_{yx}^{t}(1 - f_{yx}^{t}) \\ y(t+1) &= r_2 f_{xy}^{t}(1 - f_{xy}^{t}) \\ f_{xy}^t &= \dfrac{y(t) + c_{xy}(x(t) + \sigma_{xy} \xi_{xy}^t )}{1 + c_{xy} (1 + \sigma_{xy} )} \\ f_{yx}^t &= \dfrac{x(t) + c_{yx}(y(t) + \sigma_{yx} \xi_{yx}^t )}{1 + c_{yx} (1 + \sigma_{yx} )}, \end{align}

where the coupling strength $c_{xy}$ controls how strongly species $x$ influences species $y$, and vice versa for $c_{yx}$. To simulate time-varying influence of unobserved processes, we use the dynamical noise terms $\xi_{xy}^t$ and $\xi_{yx}^t$, drawn from a uniform distribution with support on $[0, 1]$. If $\sigma_{xy} > 0$, then the influence of $x$ on $y$ is masked by dynamical noise equivalent to $\sigma_{xy} \xi_{xy}^{t}$ at the $t$-th iteration of the map, and vice versa for $\sigma_{yx}$.

References

1. Diego, David, Kristian Agasøster Haaga, and Bjarte Hannisdal. "Transfer entropy computation using the Perron-Frobenius operator." Physical Review E 99.4 (2019): 042212.
source

### Forcing of two independent logistic maps from common logistic map driver

CausalityTools.ExampleSystems.logistic3Function
logistic3(;u₀ = rand(3), r = 4,
σx = 0.05, σy = 0.05, σz = 0.05) → DiscreteDynamicalSystem

Initialise a dynamical system consisting of three coupled logistic map representing the response of two independent dynamical variables to the forcing from a common driver. The dynamical influence goes in the directions $Z \to X$ and $Z \to Y$.

Equations of motion

The equations of motion are

\begin{aligned} x(t+1) = (x(t)(r - r_1 x(t) - z(t) + σ_x η_x)) \mod 1 \\ y(t+1) = (y(t)(r - r_2 y(t) - z(t) + σ_y η_y)) \mod 1 \\ z(t+1) = (z(t)(r - r_3 z(t) + σ_z η_z)) \mod 1 \end{aligned}

Dynamical noise may be added to each of the dynamical variables by tuning the parameters σz, σx and σz. Default values for the parameters r₁, r₂ and r₃ are set such that the system exhibits chaotic behaviour, with r₁ = r₂ = r₃ = 4.

References

1. Runge, Jakob. Causal network reconstruction from time series: From theoretical assumptions to practical estimation, Chaos 28, 075310 (2018); doi: 10.1063/1.5025050
source

### Unidirectional, transitive chain of logistic maps

CausalityTools.ExampleSystems.logistic4Function
logistic4(;u₀ = rand(4), r₁ = 3.9, r₂ = 3.6, r₃ = 3.6, r₄ = 3.8,
c₁₂ = 0.4, c₂₃ = 0.4, c₃₄ = 0.35) → DiscreteDynamicalSystem

Initialise a system of a transitive chain of four unidirectionally coupled logistic maps, where $y_1 \to y_2 \to y_3 \to y_4$ [1]. Default parameters are as in [1].

Note: With the default parameters which are as in [1], for some initial conditions, this system wanders off to $\pm \infty$ for some of the variables. Make sure that you have a good realisation before using the orbit for anything.

Equations of motion

\begin{aligned} y_1(t+1) &= y_1(t)(r_1 - r_1 y_1) \\ y_2(t+1) &= y_2(t)(r_2 - c_{12} y_1 - r_2 y_2) \\ y_3(t+1) &= y_3(t)(r_3 - c_{23} y_2 - r_3 y_3) \\ y_4(t+1) &= y_4(t)(r_4 - c_{34} y_3 - r_4 y_4) \end{aligned}

References

1. Ye, Hao, et al. "Distinguishing time-delayed causal interactions using convergent cross mapping." Scientific reports 5 (2015): 14750
source

### Two unidirectionally coupled Henon maps

CausalityTools.ExampleSystems.henon2Function
henon2(;u₀ = rand(4), c_xy = 2.0) → DiscreteDynamicalSystem

Initialize a 2D Henon system consisting of two identical Henon maps with unidirectional forcing $X \to Y$ [1].

Equations of motion

The equations of motion are

\begin{aligned} x_1(t+1) &= 1.4 - x_1^2(t) + 0.3x_2(t) \\ x_2(t+1) &= x_1(t) \\ y_1(t+1) &= 1.4 - [c_{xy} x_1(t) y_1(t) + (1-c_{xy}) y_1^2(t)] + 0.3 y_2(t) \\ y_2(t+1) &= y_1(t) \end{aligned}

References

1. Krakovská, A., Jakubík, J., Chvosteková, M., Coufal, D., Jajcay, N., & Paluš, M. (2018). Comparison of six methods for the detection of causality in a bivariate time series. Physical Review E, 97(4), 042207.
source

### Strange, nonchaotic attractors

CausalityTools.ExampleSystems.anishchenko1Function
anishchenko1(;u₀ = rand(2), α =3.277, s=0.1, ω=0.5*(sqrt(5)-1)) → DiscreteDynamicalSystem

Initialise the system defined by eq. 13 in [1], which can give strange, nonchaotic attractors.

Equations of motion

The equations of motion are

\begin{aligned} dx &= \alpha (1-s \cos (2 \pi \phi )) \cdot x(1-x) \\ dϕ &= (\phi + \omega ) \mod{1} \end{aligned}

References

1. Anishchenko, Vadim S., and Galina I. Strelkova. "Irregular attractors." Discrete dynamics in Nature and Society 2.1 (1998): 53-72.
source

### Bidirectional Ikeda map

CausalityTools.ExampleSystems.ikedaFunction
ikeda(; u₀ = rand(2), c_xy = 1.0, c_yx = 1.0, a = 0.8, b = 12, c = 0.9,
r₁ = rand(Uniform(0.01, 0.3)), r₂ = rand(Uniform(0.01, 0.3)), σ = 0.05)

Initialise a discrete two-dimensional Ikeda map system, adapted from [1] by adding a noise term and allowing the influences from $x \to y$ ($c_{xy}$) and from $y \to x$ ($c_{yx}$) to be adjusted.

As a rule-of-thumb, if parameters a, b, and c are drawn from uniform distributions on [0.8, 1.5], [10, 14] and [0.1, 0.9].

The difference equations are

\begin{aligned} x(t+1) = 1 + \mu(x \cos{(\theta)} - c_{yx} y \sin{(\theta)}) - min(\dfrac{\sigma \xi_{t}^{(1)})}{(1-x)}, \xi_{t}^{(2)} \\ y(t+1) = \mu(y \cos{(\theta)} - c_{xy} x \sin{(\theta)}) - min(\dfrac{\sigma \zeta_{t}^{(1)})}{(1-y)}, \zeta_{t}^{(2)} \end{aligned}

References

1. Cao, Liangyue, Alistair Mees, and Kevin Judd. "Modeling and predicting non-stationary time series." International Journal of Bifurcation and Chaos 7.08 (1997): 1823-1831.
source

### Noise

CausalityTools.ExampleSystems.noise_ugFunction
noise_ug(n::Int; μ = 0, σ = 1)

Generate a signal consisting of n steps of uncorrelated Gaussian noise from a normal distribution with mean μ and standard deviation σ.

source
CausalityTools.ExampleSystems.noise_brownianFunction
noise_brownian(n::Int; lo = - 1, hi = 1)
noise_brownian(d::Distribution, n::Int)

Generate a signal consisting of n steps of Brownian noise, generated as the zero-mean and unit standard deviation normalised cumulative sum of noise generated from a uniform distribution on [lo, hi]. Optionally, a distribution d from which to sample can be provided.

Examples

# Based on uncorrelated uniform noise
noise_brownian(100)
noise_brownian(100, lo = -2, hi = 2)
noise_brownian(Uniform(-3, 3), 100)

# Based on uncorrelated Gaussian noise
μ, σ = 0, 2
noise_brownian(Normal(μ, σ), 100)
source
• Elowitz2000Elowitz, M. B., & Leibler, S. (2000). A synthetic oscillatory network of transcriptional regulators. Nature, 403(6767), 335-338.
• Sun2014Sun, J., Cafaro, C., & Bollt, E. M. (2014). Identifying the coupling structure in complex systems through the optimal causation entropy principle. Entropy, 16(6), 3416-3433.
• Schreiber2000Schreiber, Thomas. "Measuring information transfer." Physical review letters 85.2 (2000): 461.