Expand description
§chronos-ts
chronos-ts is a pure-Rust time-series modeling and forecasting library
(no LAPACK/BLAS/MKL dependency, so it builds anywhere).
§Features
- Auto ARIMA / SARIMA / SARIMAX: automated order selection with real
coefficient estimation by Conditional Sum of Squares (default) or exact
Gaussian maximum likelihood via the Kalman filter
(
EstimationMethod::Mle). Includes a mean/drift term, coefficient standard errors, correct prediction intervals, and an optional Box-Cox transform. - Prophet decomposition: structural time series with trend changepoints, Fourier seasonalities, holidays, logistic growth, and Monte-Carlo intervals.
- Diagnostics & tuning: residual ACF/PACF, Ljung-Box, Jarque-Bera, and cross-validated hyperparameter search.
§ARIMA quick start
use chronos_ts::arima::{auto_arima, AutoArimaOptions};
use ndarray::Array1;
let series = Array1::from(vec![10.0, 12.0, 15.0, 14.0, 18.0, 20.0, 23.0]);
let opts = AutoArimaOptions {
max_p: 2,
max_d: 1,
max_q: 2,
..Default::default()
};
let model = auto_arima(&series, opts).expect("Model should fit successfully");
let forecast = model.forecast(&series, 3);
assert_eq!(forecast.len(), 3);§Prophet quick start
use chronos_ts::{ProphetDecomposition, SeasonalityMode};
use chrono::{Duration, NaiveDate};
use ndarray::Array1;
let start = NaiveDate::from_ymd_opt(2023, 1, 1).unwrap();
let dates: Vec<NaiveDate> = (0..30).map(|i| start + Duration::days(i)).collect();
let y = Array1::from_shape_fn(30, |i| 10.0 + 0.5 * i as f64);
let mut model = ProphetDecomposition::new(5, 0.05);
model.seasonality_mode = SeasonalityMode::Additive;
model.add_seasonality("weekly", 7.0, 3);
model.fit(&dates, &y, None, None).unwrap();
let prediction = model.predict(&dates).unwrap();
assert_eq!(prediction.yhat.len(), 30);Re-exports§
pub use arima::arima_cross_validation;pub use arima::auto_arima;pub use arima::Arima;pub use arima::ArimaCvReport;pub use arima::ArimaOrder;pub use arima::AutoArimaOptions;pub use arima::EstimationMethod;pub use arima::InformationCriterion;pub use arima::SarimaModel;pub use arima::SarimaOrder;pub use decomposition::Holiday;pub use decomposition::ProphetDecomposition;pub use decomposition::ProphetPrediction;pub use decomposition::SeasonalityMode;pub use decomposition::TrendType;pub use diagnostics::CrossValidationEvaluator;pub use diagnostics::CrossValidationReport;pub use diagnostics::DiagnosticsResult;pub use diagnostics::HorizonMetrics;pub use diagnostics::JarqueBeraResult;pub use diagnostics::LjungBoxResult;pub use diagnostics::ResidualDiagnostics;pub use errors::ChronosError;pub use errors::Result;pub use stat_tests::adf_test;pub use stat_tests::estimate_D;pub use stat_tests::estimate_d;pub use stat_tests::AdfTestResult;pub use statespace::KalmanFilter;pub use statespace::KalmanFilterResult;pub use statespace::StateSpaceModel;pub use statespace_mle::fit_state_space_mle;pub use statespace_mle::MleFitResult;pub use statespace_mle::StateSpaceLikelihoodCost;pub use tuning::AutoTuneResult;pub use tuning::AutoTuner;pub use tuning::HyperparameterCandidate;pub use tuning::HyperparameterGrid;pub use tuning::OptimizationMetric;pub use viz::ChartDataPoint;pub use viz::DecompositionExport;pub use viz::VisualizationExporter;