Example systems
Continuous
Mediated link
CausalityTools.ExampleSystems.mediated_link
— Methodmediated_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
- 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
Two bidirectionally coupled 3D Lorenz systems
CausalityTools.ExampleSystems.lorenz_lorenz_bidir
— Functionlorenz_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
- 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.
Two bidirectionally coupled 3D Lorenz systems forced by another 3D Lorenz system
CausalityTools.ExampleSystems.lorenz_lorenz_lorenz_bidir_forced
— Functionlorenz_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
- 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.
Three transitively connected 3D Lorenz systems
CausalityTools.ExampleSystems.lorenz_lorenz_lorenz_transitive
— Functionlorenz_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
- Papana et al., Simulation Study of Direct Causality Measures in Multivariate Time Series. Entropy 2013, 15(7), 2635-2661; doi:10.3390/e15072635
Two bidirectionally coupled 3D Rössler systems
CausalityTools.ExampleSystems.rossler_rossler_bidir
— Functionrossler_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
- 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.
Two bidirectionally coupled 3D Rössler systems forced by another 3D Rössler system
CausalityTools.ExampleSystems.rossler_rossler_rossler_bidir_forced
— Functionrossler_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
- 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.
Unidirectonal forcing from a 3D Rössler system to a 3D Lorenz system
CausalityTools.ExampleSystems.rossler_lorenz
— Functionrossler_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
- 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
N-scroll Chua attractors
CausalityTools.ExampleSystems.chuacircuit_nscroll_sine
— Functionchuacircuit_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
- 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.
Repressilator
CausalityTools.ExampleSystems.repressilator
— Functionrepressilator(;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.
Discrete
Ulam map
CausalityTools.ExampleSystems.ulam
— Functionulam(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$.
Autoregressive order one 2D system
CausalityTools.ExampleSystems.ar1_unidir
— Functionar1_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
- 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
Nonlinear 3D system with nonlinear coupling
CausalityTools.ExampleSystems.nonlinear3d
— Functionnonlinear3d(;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
- 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.
Unidirectionally coupled 2D logistic maps
CausalityTools.ExampleSystems.logistic2_unidir
— Functionlogistic2(;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
- Diego, David, Kristian Agasøster Haaga, and Bjarte Hannisdal. "Transfer entropy computation using the Perron-Frobenius operator." Physical Review E 99.4 (2019): 042212.
Bidirectionally coupled 2D logistic maps
CausalityTools.ExampleSystems.logistic2_bidir
— Functionlogistic2_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
- Diego, David, Kristian Agasøster Haaga, and Bjarte Hannisdal. "Transfer entropy computation using the Perron-Frobenius operator." Physical Review E 99.4 (2019): 042212.
Forcing of two independent logistic maps from common logistic map driver
CausalityTools.ExampleSystems.logistic3
— Functionlogistic3(;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
- Runge, Jakob. Causal network reconstruction from time series: From theoretical assumptions to practical estimation, Chaos 28, 075310 (2018); doi: 10.1063/1.5025050
Unidirectional, transitive chain of logistic maps
CausalityTools.ExampleSystems.logistic4
— Functionlogistic4(;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
- Ye, Hao, et al. "Distinguishing time-delayed causal interactions using convergent cross mapping." Scientific reports 5 (2015): 14750
Two unidirectionally coupled Henon maps
CausalityTools.ExampleSystems.henon2
— Functionhenon2(;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
- 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.
Strange, nonchaotic attractors
CausalityTools.ExampleSystems.anishchenko1
— Functionanishchenko1(;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
- Anishchenko, Vadim S., and Galina I. Strelkova. "Irregular attractors." Discrete dynamics in Nature and Society 2.1 (1998): 53-72.
Bidirectional Ikeda map
CausalityTools.ExampleSystems.ikeda
— Functionikeda(; 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
- 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.
Noise
CausalityTools.ExampleSystems.noise_uu
— Functionnoise_uu(n::Int, lo = - 1, hi = 1)
Generate a signal consisting of n
steps of uncorrelated uniform noise from a uniform distribution on [lo, hi]
.
CausalityTools.ExampleSystems.noise_ug
— Functionnoise_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 σ
.
CausalityTools.ExampleSystems.noise_brownian
— Functionnoise_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)
- 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.