1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//! # 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`](arima::EstimationMethod)). 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
//!
//! ```rust
//! 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
//!
//! ```rust
//! 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);
//! ```
// `non_snake_case` is allowed only in the modules that use the standard SARIMA
// uppercase seasonal notation (P, D, Q); it is not enabled crate-wide.
// Internal implementation details — not part of the public API.
pub
pub
pub
// Core public API exports
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;