Skip to main content

Crate chronos_ts

Crate chronos_ts 

Source
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;

Modules§

arima
decomposition
diagnostics
errors
stat_tests
statespace
statespace_mle
tuning
utils
viz