Crates.io | oxidiviner-autoregressive |
lib.rs | oxidiviner-autoregressive |
version | 0.3.3 |
created_at | 2025-05-19 18:55:56.755875+00 |
updated_at | 2025-05-19 20:48:49.360282+00 |
description | Autoregressive models for the OxiDiviner time series forecasting library |
homepage | https://github.com/rustic-ml/OxiDiviner |
repository | https://github.com/rustic-ml/OxiDiviner |
max_upload_size | |
id | 1680261 |
size | 128,769 |
Autoregressive time series models for econometric forecasting and analysis.
This crate provides a comprehensive collection of autoregressive models for time series analysis and forecasting. These models are fundamental tools in econometrics, finance, and time series forecasting, allowing for the modeling of both stationary and non-stationary time series.
Add this to your Cargo.toml
:
[dependencies]
oxidiviner-autoregressive = "0.1.0"
oxidiviner-core = "0.1.0"
use oxidiviner_core::{TimeSeriesData, Forecaster};
use oxidiviner_autoregressive::{ARIMAModel, ARModel};
use chrono::{Utc, TimeZone};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create sample time series data
let dates = (0..20).map(|i| Utc.timestamp_opt(1609459200 + i * 86400, 0).unwrap()).collect();
let values = vec![
10.2, 10.8, 11.4, 11.9, 12.3, 12.9, 13.2, 13.6, 13.9, 14.3,
14.5, 14.9, 15.1, 15.4, 15.6, 15.8, 16.0, 16.1, 16.3, 16.4
];
let data = TimeSeriesData::new(dates, values)?;
// Create an AR(2) model
let mut ar_model = ARModel::new(2)?;
ar_model.fit(&data)?;
// Create an ARIMA(1,1,1) model
let mut arima_model = ARIMAModel::new(1, 1, 1)?;
arima_model.fit(&data)?;
// Generate forecasts
let ar_forecast = ar_model.forecast(5)?;
let arima_forecast = arima_model.forecast(5)?;
println!("AR(2) Forecast: {:?}", ar_forecast);
println!("ARIMA(1,1,1) Forecast: {:?}", arima_forecast);
Ok(())
}
Autoregressive models assume that the current value of a time series depends on its previous values plus an error term:
Licensed under the MIT License. See LICENSE for details.