6个版本

0.3.1 2024年7月11日
0.3.0 2023年9月25日
0.2.2 2023年6月20日
0.2.1 2021年12月16日
0.1.0 2021年10月15日

#70 in 数学

Download history 74/week @ 2024-04-22 30/week @ 2024-04-29 10/week @ 2024-05-06 99/week @ 2024-05-13 119/week @ 2024-05-20 96/week @ 2024-05-27 328/week @ 2024-06-03 23/week @ 2024-06-10 1117/week @ 2024-06-17 257/week @ 2024-06-24 182/week @ 2024-07-01 157/week @ 2024-07-08 382/week @ 2024-07-15 23/week @ 2024-07-22 421/week @ 2024-07-29 35/week @ 2024-08-05

868 每月下载量
用于 7 个crate(2直接使用)

无许可或MIT

38KB
831

STL Rust

针对Rust的季节性趋势分解

🎉 无依赖项

Build Status

安装

将以下行添加到您的应用程序的Cargo.toml文件中的[dependencies]

stlrs = "0.3"

入门

分解时间序列

use stlrs::Stl;

let series = vec![
    5.0, 9.0, 2.0, 9.0, 0.0, 6.0, 3.0, 8.0, 5.0, 8.0,
    7.0, 8.0, 8.0, 0.0, 2.0, 5.0, 0.0, 5.0, 6.0, 7.0,
    3.0, 6.0, 1.0, 4.0, 4.0, 4.0, 3.0, 7.0, 5.0, 8.0
];
let period = 7; // period of the seasonal component

let res = Stl::fit(&series, period).unwrap();

获取组件

res.seasonal();
res.trend();
res.remainder();

鲁棒性

使用鲁棒性迭代

let res = Stl::params().robust(true).fit(&series, period).unwrap();

获取鲁棒性权重

res.weights();

多重季节性

指定多个周期

use stlrs::Mstl;

let res = Mstl::fit(&series, &[7, 365]).unwrap();

参数

设置STL参数

Stl::params()
    .seasonal_length(7)     // length of the seasonal smoother
    .trend_length(15)       // length of the trend smoother
    .low_pass_length(7)     // length of the low-pass filter
    .seasonal_degree(0)     // degree of locally-fitted polynomial in seasonal smoothing
    .trend_degree(1)        // degree of locally-fitted polynomial in trend smoothing
    .low_pass_degree(1)     // degree of locally-fitted polynomial in low-pass smoothing
    .seasonal_jump(1)       // skipping value for seasonal smoothing
    .trend_jump(2)          // skipping value for trend smoothing
    .low_pass_jump(1)       // skipping value for low-pass smoothing
    .inner_loops(2)         // number of loops for updating the seasonal and trend components
    .outer_loops(0)         // number of iterations of robust fitting
    .robust(false)          // if robustness iterations are to be used

设置MSTL参数

Mstl::params()
    .iterations(2)                   // number of iterations
    .lambda(0.5)                     // lambda for Box-Cox transformation
    .seasonal_lengths(&[11, 15])     // lengths of the seasonal smoothers
    .stl_params(Stl::params())       // STL params

强度

获取季节性强度

res.seasonal_strength();

获取趋势强度

res.trend_strength();

致谢

此库是从Fortran实现移植的。

参考文献

历史

查看变更日志

贡献

鼓励每个人都来帮助改进这个项目。以下是一些你可以帮助的方式

开始开发

git clone https://github.com/ankane/stl-rust.git
cd stl-rust
cargo test

无运行时依赖