mod acf;
mod forecast;
mod spectral;
pub use acf::{
functional_acf, functional_difference, functional_pacf, long_run_covariance, stationarity_test,
};
pub use forecast::{fplsr, ftsm, ftsm_forecast, ftsm_forecast_multistep, ftsm_update};
pub use spectral::{dpca, dpca_reconstruct, spectral_density};
use crate::matrix::FdMatrix;
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct SpectralDensityResult {
pub freqs: Vec<f64>,
pub re: Vec<Vec<f64>>,
pub im: Vec<Vec<f64>>,
pub m: usize,
pub n_curves: usize,
pub bandwidth: usize,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct DpcaResult {
pub filters: Vec<FdMatrix>,
pub scores: FdMatrix,
pub eigenvalues: Vec<Vec<f64>>,
pub n_freqs: usize,
pub filter_lag: usize,
pub ncomp: usize,
pub valid_range: (usize, usize),
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct DpcaReconstruction {
pub fitted: FdMatrix,
pub reconstruction_error: Vec<f64>,
pub valid_range: (usize, usize),
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct FacfResult {
pub lags: Vec<u32>,
pub acf: Vec<f64>,
pub pacf: Vec<f64>,
pub upper_band: Vec<f64>,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct StationarityResult {
pub statistic: f64,
pub p_value: f64,
pub n_perm: usize,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct LongRunCovResult {
pub cov_matrix: Vec<f64>,
pub m: usize,
pub bandwidth: usize,
pub n_curves: usize,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct ArModelResult {
pub order: usize,
pub phi: Vec<f64>,
pub sigma2: f64,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct FtsmResult {
pub mean: Vec<f64>,
pub rotation: crate::matrix::FdMatrix,
pub scores: crate::matrix::FdMatrix,
pub fitted: crate::matrix::FdMatrix,
pub weights: Vec<f64>,
pub ncomp: usize,
pub ar_models: Vec<ArModelResult>,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct FtsmForecastResult {
pub forecast: crate::matrix::FdMatrix,
pub h: usize,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct FplsrResult {
pub forecast: crate::matrix::FdMatrix,
pub fitted: crate::matrix::FdMatrix,
pub ncomp: usize,
}