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}