mod acf;
mod forecast;
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};
#[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,
}