Misc
StateSpaceDynamics.AbstractHMM
— TypeAbstract type for HMMs
StateSpaceDynamics.AutoRegressiveEmission
— TypeSpecial case of regression emission models that are autoregressive.
StateSpaceDynamics.FilterSmooth
— Type" FilterSmooth{T<:Real}
A mutable structure for storing smoothed estimates and associated covariance matrices in a filtering or smoothing algorithm.
Type Parameters
T<:Real
: The numerical type used for all fields (e.g.,Float64
,Float32
).
Fields
x_smooth::Matrix{T}
The matrix containing smoothed state estimates over time. Each column typically represents the state vector at a given time step.p_smooth::Array{T, 3}
The posterior covariance matrices with dimensions (latentdim, latentdim, time_steps)E_z::Array{T, 3}
The expected latent states, size (statedim, T, ntrials).E_zz::Array{T, 4}
The expected value of zt * zt', size (statedim, statedim, T, n_trials).E_zz_prev::Array{T, 4}
The expected value of zt * z{t-1}', size (statedim, statedim, T, n_trials).
Example
```julia
Initialize a FilterSmooth object with Float64 type
filter = FilterSmooth{Float64}( xsmooth = zeros(10, 100), psmooth = zeros(10, 10, 100), Ez = zeros(10, 5, 100), Ezz = zeros(10, 10, 5, 100), Ezzprev = zeros(10, 10, 5, 100) )
StateSpaceDynamics.ForwardBackward
— TypeForwardBackward{T<:Real}
A mutable struct that encapsulates the forward–backward algorithm outputs for a hidden Markov model (HMM).
Fields
loglikelihoods::Matrix{T}
: Matrix of log-likelihoods for each observation and state.α::Matrix{T}
: The forward probabilities (α) for each time step and state.β::Matrix{T}
: The backward probabilities (β) for each time step and state.γ::Matrix{T}
: The state occupancy probabilities (γ) for each time step and state.ξ::Array{T,3}
: The pairwise state occupancy probabilities (ξ) for consecutive time steps and state pairs.
Typically, α
and β
are computed by the forward–backward algorithm to find the likelihood of an observation sequence. γ
and ξ
are derived from these calculations to estimate how states transition over time.
StateSpaceDynamics.MixtureModel
— TypeAbstract type for Mixture Models. I.e. GMM's, etc.
StateSpaceDynamics.RegressionModel
— TypeAbstract type for Regression Models. I.e. GaussianRegression, BernoulliRegression, etc.
StateSpaceDynamics.GaussianHMM
— MethodGaussianHMM(; K::Int, output_dim::Int, A::Matrix{<:Real}=initialize_transition_matrix(K), πₖ::Vector{Float64}=initialize_state_distribution(K))
Create a Hidden Markov Model with Gaussian Emissions
Arguments
K::Int
: The number of hidden statesoutput_dim::Int
: The dimensionality of the observationA::Matrix{<:Real}=initialize_transition_matrix(K)
: The transition matrix of the HMM (defaults to random initialization)πₖ::Vector{Float64}=initialize_state_distribution(K)
: The initial state distribution of the HMM (defaults to random initialization)
Returns
::HiddenMarkovModel
: Hidden Markov Model Object with Gaussian Emissions
```
StateSpaceDynamics.SwitchingAutoRegression
— MethodSwitchingAutoRegression(; K::Int, output_dim::Int, order::Int, include_intercept::Bool=true, β::Matrix{<:Real}=if include_intercept zeros(output_dim * order + 1, output_dim) else zeros(output_dim * order, output_dim) end, Σ::Matrix{<:Real}=Matrix{Float64}(I, output_dim, output_dim), λ::Float64=0.0, A::Matrix{<:Real}=initialize_transition_matrix(K), πₖ::Vector{Float64}=initialize_state_distribution(K))
Create a Switching AutoRegression Model
Arguments
K::Int
: The number of hidden states.output_dim::Int
: The dimensionality of the output data.order::Int
: The order of the autoregressive model.include_intercept::Bool=true
: Whether to include an intercept in the regression model.β::Matrix{<:Real}
: The autoregressive coefficients (defaults to zeros).Σ::Matrix{<:Real}=Matrix{Float64}(I, output_dim, output_dim)
: The covariance matrix for the autoregressive model (defaults to an identity matrix).λ::Float64=0.0
: Regularization parameter for the regression (defaults to zero).A::Matrix{<:Real}=initialize_transition_matrix(K)
: The transition matrix of the HMM (Defaults to a random initialization).πₖ::Vector{Float64}=initialize_state_distribution(K)
: The initial state distribution of the HMM (Defaults to a random initialization).
Returns
::HiddenMarkovModel
: A Switching AutoRegression Model
StateSpaceDynamics.SwitchingBernoulliRegression
— MethodSwitchingBernoulliRegression(; K::Int, input_dim::Int, include_intercept::Bool=true, β::Vector{<:Real}=if include_intercept zeros(input_dim + 1) else zeros(input_dim) end, λ::Float64=0.0, A::Matrix{<:Real}=initialize_transition_matrix(K), πₖ::Vector{Float64}=initialize_state_distribution(K))
Create a Switching Bernoulli Regression Model
Arguments
K::Int
: The number of hidden states.input_dim::Int
: The dimensionality of the input data.include_intercept::Bool=true
: Whether to include an intercept in the regression model (defaults to true).β::Vector{<:Real}
: The regression coefficients (defaults to zeros).λ::Float64=0.0
: Regularization parameter for the regression (defaults to zero).A::Matrix{<:Real}=initialize_transition_matrix(K)
: The transition matrix of the HMM (defaults to random initialization).πₖ::Vector{Float64}=initialize_state_distribution(K)
: The initial state distribution of the HMM (defaults to random initialization).
Returns
::HiddenMarkovModel
: A Switching Bernoulli Regression Model
StateSpaceDynamics.SwitchingGaussianRegression
— MethodSwitchingGaussianRegression(;
K::Int,
input_dim::Int,
output_dim::Int,
include_intercept::Bool = true,
β::Matrix{<:Real} = if include_intercept
zeros(input_dim + 1, output_dim)
else
zeros(input_dim, output_dim)
end,
Σ::Matrix{<:Real} = Matrix{Float64}(I, output_dim, output_dim),
λ::Float64 = 0.0,
A::Matrix{<:Real} = initialize_transition_matrix(K),
πₖ::Vector{Float64} = initialize_state_distribution(K)
)
Create a Switching Gaussian Regression Model
Arguments
K::Int
: The number of hidden states.input_dim::Int
: The dimensionality of the input features.output_dim::Int
: The dimensionality of the output predictions.include_intercept::Bool
: Whether to include an intercept in the regression model (default istrue
).β::Matrix{<:Real}
: The regression coefficients (defaults to zeros based oninput_dim
andoutput_dim
).Σ::Matrix{<:Real}
: The covariance matrix of the Gaussian emissions (defaults to an identity matrix).λ::Float64
: The regularization parameter for the regression (default is0.0
).A::Matrix{<:Real}
: The transition matrix of the Hidden Markov Model (defaults to random initialization).πₖ::Vector{Float64}
: The initial state distribution of the Hidden Markov Model (defaults to random initialization).
Returns
::HiddenMarkovModel
: A Switching Gaussian Regression Model
Base.getproperty
— Methodgetproperty(model::AutoRegressiveEmission, sym::Symbol)
Get various properties of 'innerGaussianRegression`.
StateSpaceDynamics.block_tridgm
— Methodblock_tridgm(main_diag::Vector{Matrix{T}}, upper_diag::Vector{Matrix{T}}, lower_diag::Vector{Matrix{T}}) where {T<:Real}
Construct a block tridiagonal matrix from three vectors of matrices.
Throws
ErrorException
if the lengths ofupper_diag
andlower_diag
are not one less than the length ofmain_diag
.
StateSpaceDynamics.block_tridiagonal_inverse
— Methodblock_tridiagonal_inverse(A, B, C)
Compute the inverse of a block tridiagonal matrix.
Notes: This implementation is from the paper:
"An Accelerated Lambda Iteration Method for Multilevel Radiative Transfer” Rybicki, G.B., and Hummer, D.G., Astronomy and Astrophysics, 245, 171–181 (1991), Appendix B.
StateSpaceDynamics.block_tridiagonal_inverse_static
— Methodblock_tridiagonal_inverse_static(A, B, C)
Compute the inverse of a block tridiagonal matrix using static matrices. See block_tridiagonal_inverse
for details.
StateSpaceDynamics.check_same_type
— Methodcheck_same_type(args...)
Utility function to check if n arguments share the same types.
StateSpaceDynamics.euclidean_distance
— Methodeuclidean_distance(a::AbstractVector{Float64}, b::AbstractVector{Float64})
Calculate the Euclidean distance between two points.
StateSpaceDynamics.gaussian_entropy
— Methodgaussian_entropy(H::Symmetric{BigFloat, <:SparseMatrix})
Specialized method for BigFloat sparse matrices using logdet.
StateSpaceDynamics.gaussian_entropy
— Methodgaussian_entropy(H::Symmetric{T}) where {T<:Real}
Calculate the entropy of a Gaussian distribution with Hessian (i.e. negative precision) matrix H
.
StateSpaceDynamics.kmeans_clustering
— Methodkmeans_clustering(data::AbstractMatrix{T}, k_means::Int, max_iters::Int=100, tol::Float64=1e-6) where {T<:Real}
Perform K-means clustering on column-major data.
StateSpaceDynamics.kmeans_clustering
— Methodkmeans_clustering(data::AbstractVector{T}, k_means::Int, max_iters::Int=100, tol::Float64=1e-6)
Perform K-means clustering on vector data.
StateSpaceDynamics.kmeanspp_initialization
— Methodkmeanspp_initialization(data::AbstractMatrix{T}, k_means::Int) where {T<:Real}
Perform K-means++ initialization for cluster centroids (column-major input).
StateSpaceDynamics.kmeanspp_initialization
— Methodkmeanspp_initialization(data::AbstractVector{T}, k_means::Int)
K-means++ initialization for vector data.
StateSpaceDynamics.logistic
— Methodlogistic(x::Real)
Calculate the logistic function in a numerically stable way.
StateSpaceDynamics.make_posdef!
— Methodmake_posdef!(A::AbstractMatrix{T}) where {T<:Real}
Ensure that a matrix is positive definite by adjusting its eigenvalues.
StateSpaceDynamics.random_rotation_matrix
— Functionrandom_rotation_matrix(n)
Generate a random rotation matrix of size n x n
.
StateSpaceDynamics.row_matrix
— Methodrow_matrix(x::AbstractVector)
Convert a vector to a row matrix.
StateSpaceDynamics.stabilize_covariance_matrix
— Methodstabilize_covariance_matrix(Σ::Matrix{<:Real})
Stabilize a covariance matrix by ensuring it is symmetric and positive definite.