Skip to main content

so_tsa/
lib.rs

1//! Time Series Analysis (TSA) module for StatOxide
2//!
3//! This crate provides comprehensive time series analysis tools, including:
4#![allow(missing_docs)]
5//!
6//! 1. **Core Data Structures**: `TimeSeries` with datetime indexing
7//! 2. **Stationarity Tests**: ADF, KPSS, PP tests
8//! 3. **ARIMA Models**: AR, MA, ARMA, ARIMA, SARIMA
9//! 4. **GARCH Models**: ARCH, GARCH for volatility modeling
10//! 5. **State Space Models**: Kalman filter, structural time series
11//! 6. **Decomposition**: Seasonal-Trend decomposition (STL), moving averages
12//! 7. **Forecasting**: Point forecasts, prediction intervals
13//! 8. **Diagnostics**: Residual analysis, model selection criteria
14//!
15//! # Example Usage
16//!
17//! ```rust,no_run
18//! use so_tsa::{TimeSeries, ARIMA, GARCH, GARCHDistribution};
19//! use ndarray::Array1;
20//!
21//! // Create a simple time series with enough data for ARIMA
22//! let values = Array1::from_vec(vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0]);
23//! let timestamps: Vec<i64> = (0..values.len() as i64).collect();
24//! let ts = TimeSeries::new("series", timestamps, values, None).unwrap();
25//!
26//! // Fit ARIMA(0,0,0) model (white noise with constant)
27//! let arima = ARIMA::builder(0, 0, 0)
28//!     .with_constant(true)
29//!     .max_iter(200)
30//!     .tol(1e-4)
31//!     .fit(&ts).unwrap();
32//!
33//! // Fit GARCH(1,1) model  
34//! let garch = GARCH::builder(1, 1)
35//!     .distribution(GARCHDistribution::Normal)
36//!     .max_iter(200)
37//!     .tol(1e-4)
38//!     .fit(&ts).unwrap();
39//! ```
40//!
41//! # References
42//!
43//! - Box, G. E. P., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). *Time Series Analysis*.
44//! - Hyndman, R. J., & Athanasopoulos, G. (2021). *Forecasting: Principles and Practice*.
45//! - R's `forecast` package and statsmodels' `tsa` module.
46
47#![allow(non_snake_case)]
48#![warn(missing_docs)]
49
50pub mod arima;
51pub mod decomposition;
52pub mod forecast;
53pub mod garch;
54pub mod results;
55pub mod statespace;
56pub mod stationarity;
57pub mod timeseries;
58pub mod utils;
59
60// Re-exports for convenience
61pub use arima::{ARIMA, ARIMAResults, SARIMABuilder, SARIMAOrder};
62pub use decomposition::{
63    DecompositionExt, DecompositionMethod, DecompositionResults, HodrickPrescottFilter,
64    MovingAverageDecomposition, STLDecomposition, X12ARIMA,
65};
66pub use forecast::{
67    ForecastMetrics, IntervalMethod, PredictionInterval, PredictionIntervals, TimeSeriesCV,
68};
69pub use garch::{ARCH, GARCH, GARCHDistribution, GARCHOrder, GARCHResults};
70pub use results::{ModelComparison, ResidualDiagnostics, TSAResults};
71pub use statespace::{KalmanFilter, StateSpaceModel};
72pub use stationarity::{ADFTest, KPSSTest, PPTest, StationarityTest};
73pub use timeseries::TimeSeries;
74pub use utils::{
75    acf, box_cox, box_cox_lambda, ccf, detrend_poly, diebold_mariano, ewma, forecast_errors,
76    information_criteria, pacf, periodogram, rolling_statistic, seasonal_dummies, spectrum,
77};
78
79// Common prelude for TSA
80pub mod prelude {
81    pub use super::{
82        ADFTest, ARCH, ARIMA, ARIMAResults, DecompositionExt, DecompositionMethod,
83        DecompositionResults, ForecastMetrics, GARCH, GARCHDistribution, GARCHOrder, GARCHResults,
84        HodrickPrescottFilter, IntervalMethod, KPSSTest, KalmanFilter, ModelComparison,
85        MovingAverageDecomposition, PPTest, PredictionInterval, PredictionIntervals,
86        ResidualDiagnostics, SARIMABuilder, SARIMAOrder, STLDecomposition, StateSpaceModel,
87        StationarityTest, TSAResults, TimeSeries, TimeSeriesCV, X12ARIMA,
88    };
89}