Classify the dynamics and stability of an Ornstein-Uhlenbeck model based on eigenvalue analysis of the drift matrix \(\Theta\).
Usage
# S3 method for class 'affectOU'
stability(object, tol = 1e-10, ...)Value
A list of class stability_affectOU containing:
- is_stable
Logical,
TRUEif the system is stable (all eigenvalues have positive real parts)- dynamics
Character string describing the dynamics type using dynamical systems terminology. For 1D:
"stable node","random walk", or"unstable node". For multivariate:"stable node","stable spiral","unstable node","unstable spiral","marginally stable","saddle point", or"saddle spiral".- per_dimension
Character vector with per-dimension dynamics classification (
NULLfor 1D)- eigenvalues
Eigenvalues of theta
- ndim
Dimensionality of the process
Details
Note that although typically, a system is stable if all its eigenvalues have negative real parts, due to the parameterization of the OU process, stability is determined by positive real parts:
$$dX(t) = \Theta(\mu - X(t))dt + \Gamma dW(t)$$
As \(\Theta\) is multiplied by the negative of the state variable, positive eigenvalues indicate that deviations from the attractor decay over time, leading to a stable system. Conversely, negative eigenvalues indicate that deviations grow over time, leading to an unstable system.
Stability via eigenvalues
A stationary distribution exists if and only if all eigenvalues of \(\Theta\) have positive real parts. This is a system-level property, not a per-dimension property:
Positive diagonal elements (\(\Theta_{ii} > 0\)) alone do not guarantee stability. Strong off-diagonal coupling can push eigenvalues toward zero or negative real parts, destabilising the system.
Conversely, coupling from other dimensions can stabilise a dimension whose diagonal element is small or even zero. A dimension that would be non-stationary in isolation may become stationary when embedded in a coupled system.
Oscillatory dynamics
Complex eigenvalues (arising from asymmetric coupling) produce oscillatory dynamics, where dimensions cycle around each other. When all eigenvalues have positive real parts, these oscillations are damped and the system still converges to \(\mu\). When any eigenvalue has a non-positive real part, the oscillations grow and the system diverges.
Terminology
System-level dynamics are classified using dynamical systems terms: a node converges or diverges without oscillation, a spiral exhibits damped or growing oscillations, and a saddle point has mixed convergence/divergence across directions. Per-dimension dynamics describe the behavior of each dimension in isolation based on its diagonal element in \(\Theta\) ("stable node" if positive, "random walk" if zero, "unstable node" if negative). A dimension classified as "stable node" in isolation may still belong to an unstable coupled system due to coupling between dimensions.
See also
stationary() for the equilibrium
distribution, summary() for the full model summary.
Examples
# 1D stable node
model <- affectOU(theta = 0.5, mu = 0, gamma = 1)
stability(model)
#>
#> ── Stability analysis of 1D Ornstein-Uhlenbeck Model ──
#>
#> Stable (node). Deviations from the attractor decay exponentially.
#>
#> Eigenvalues (all real):
#> • λ1: 0.5
# 1D random walk (not stable)
model_rw <- affectOU(theta = 0)
stability(model_rw)
#>
#> ── Stability analysis of 1D Ornstein-Uhlenbeck Model ──
#>
#> Not stable (random walk). No attractor; the process drifts freely.
#>
#> Eigenvalues (all real):
#> • λ1: 0
# Positive diagonals with oscillatory coupling: stable
theta_osc <- matrix(c(0.5, -0.4, 0.4, 0.5), nrow = 2)
stability(affectOU(theta = theta_osc, mu = 0, gamma = 1))
#>
#> ── Stability analysis of 2D Ornstein-Uhlenbeck Model ──
#>
#> Stable (spiral). The system spirals toward the attractor with damped
#> oscillations.
#>
#> Eigenvalues (complex):
#> • λ1: 0.5 + 0.4i
#> • λ2: 0.5 - 0.4i
# Strong coupling still stable if real parts stay positive
theta_strong <- matrix(c(0.5, -1.5, 1.5, 0.5), nrow = 2)
stability(affectOU(theta = theta_strong, mu = 0, gamma = 1))
#>
#> ── Stability analysis of 2D Ornstein-Uhlenbeck Model ──
#>
#> Stable (spiral). The system spirals toward the attractor with damped
#> oscillations.
#>
#> Eigenvalues (complex):
#> • λ1: 0.5 + 1.5i
#> • λ2: 0.5 - 1.5i
# All diagonals positive, but coupling destabilises the system
theta_destab <- matrix(c(0.5, 1.0, 1.0, 0.5), nrow = 2)
stability(affectOU(theta = theta_destab, mu = 0, gamma = 1))
#>
#> ── Stability analysis of 2D Ornstein-Uhlenbeck Model ──
#>
#> Not stable (saddle point). Some directions converge while others diverge.
#>
#> Eigenvalues (all real):
#> • λ1: 1.5
#> • λ2: -0.5
# One negative diagonal element makes the system non-stationary
theta_unstable <- matrix(c(0.5, 0, 0, -0.3), nrow = 2)
stability(affectOU(theta = theta_unstable, mu = 0, gamma = 1))
#>
#> ── Stability analysis of 2D Ornstein-Uhlenbeck Model ──
#>
#> Not stable (saddle point). Some directions converge while others diverge.
#>
#> • Dim. 1: stable node
#> • Dim. 2: unstable node
#>
#> Eigenvalues (all real):
#> • λ1: 0.5
#> • λ2: -0.3