Misc

StateSpaceDynamics.FilterSmoothType

" 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) )

source
StateSpaceDynamics.ForwardBackwardType
ForwardBackward{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.

source
StateSpaceDynamics.GaussianHMMMethod
GaussianHMM(; 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 states
  • output_dim::Int: The dimensionality of the observation
  • 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: Hidden Markov Model Object with Gaussian Emissions

```

source
StateSpaceDynamics.SwitchingAutoRegressionMethod
SwitchingAutoRegression(; 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
source
StateSpaceDynamics.SwitchingBernoulliRegressionMethod
SwitchingBernoulliRegression(; 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
source
StateSpaceDynamics.SwitchingGaussianRegressionMethod
SwitchingGaussianRegression(; 
    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 is true).
  • β::Matrix{<:Real}: The regression coefficients (defaults to zeros based on input_dim and output_dim).
  • Σ::Matrix{<:Real}: The covariance matrix of the Gaussian emissions (defaults to an identity matrix).
  • λ::Float64: The regularization parameter for the regression (default is 0.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
source
Base.getpropertyMethod
getproperty(model::AutoRegressiveEmission, sym::Symbol)

Get various properties of 'innerGaussianRegression`.

source
StateSpaceDynamics.block_tridgmMethod
block_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 of upper_diag and lower_diag are not one less than the length of main_diag.
source
StateSpaceDynamics.block_tridiagonal_inverseMethod
block_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.

source
StateSpaceDynamics.kmeans_clusteringMethod
kmeans_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.

source