Skip to content

Discrete coupled dynamical systems

Autoregressive order one 2D system

# CausalityTools.Systems.ar1_unidirMethod.

ar1(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} dx &= a_1 x + \xi_{1} \\ dy &= b_1 y - 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.Systems.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.Systems.logistic2_unidirMethod.

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} dx &= r_1 x(1 - x) \\ dy &= 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.Systems.logistic2_bidirMethod.

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.Systems.logistic3Method.

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.Systems.logistic4Method.

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.Systems.henon2Method.

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.Systems.anishchenko1Method.

anishchenko1(;u₀ = rand(2), α =3.277, s=0.1, ω=0.5*(sqrt(5)-1))

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.Systems.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