5 releases (breaking)

Uses new Rust 2021

0.5.0 Sep 29, 2022
0.4.0 Sep 27, 2022
0.3.0 Sep 25, 2022
0.2.0 Sep 25, 2022
0.1.0 Sep 25, 2022

#672 in Math

Apache-2.0

35KB
556 lines

Unit root tests in Rust

Build

Description

Stationarity tests for time-series data in Rust.

At the moment: Dickey-Fuller test and Augmented Dickey-Fuller test with a constant but no trend.

License

This project is licensed under the terms of the Apache License 2.0.

Usage

Augmented Dickey-Fuller test:

use unit_root::prelude::distrib::AlphaLevel;
use unit_root::prelude::nalgebra::DVector;
use unit_root::prelude::*;

fn main() {
    let y = DVector::from_row_slice(&[
        -0.89642362,
        0.3222552,
        -1.96581989,
        -1.10012936,
        -1.3682928,
        1.17239875,
        2.19561259,
        2.54295031,
        2.05530587,
        1.13212955,
        -0.42968979,
    ]);

    let lag = 2;
    
    // compute the test statistic
    let report = tools::adf::constant_no_trend_test(&y, lag).unwrap();
    
    // critical values for the model with a constant but no trend:
    let critical_value = distrib::dickeyfuller::constant_no_trend_critical_value(
        report.size,
        AlphaLevel::OnePercent,
    );
    assert_eq!(report.size, 10);

    // comparison
    let t_stat = report.test_statistic;
    println!("t-statistic: {}", t_stat);
    println!("critical value: {}", critical_value);
}

See examples for more.

Dependencies

~3.5MB
~74K SLoC