#estimator #statistics #qn

fqn-estimator

Rust中的快速在线Qn尺度估算器

4个版本 (2个重大更新)

0.2.1 2024年4月2日
0.2.0 2024年4月2日
0.1.0 2024年4月1日
0.0.1 2024年3月31日

#559 in 算法

Download history 285/week @ 2024-04-02 4/week @ 2024-04-09 1/week @ 2024-05-21

每月89次下载

自定义许可

32KB
623

fqn-estimator

Rust实现的数据流滚动「快速$Q_n$」算法。

Documentation Check status Code coverage Maintenance

从成对差值中检索第$k$阶统计量是基于A. Mirzaian和E. Arjomandi的论文[^1],并从M. Cafaro和其他人的实现[^2]中进行了适配。

[^1]: DOI: 在排序行和列的矩阵中从$X + Y$中选择 (A. Mirzaian, E. Arjomandi) [^2]: GitHub: cafaro/FQN (Massimo Cafaro) [^3]: DOI: 使用$Qn$估算器的数据流中异常值的快速检测 (Massimo Cafaro, Catiuscia Melle, Marco Pulimeno, Italo Epicoco)

$Q_n$缩放系数取自关于有限样本尺度估算器的论文[^4]。

[^4]: DOI: 有限样本Rousseeuw-Croux尺度估算器 (Andrey Akinshin)

示例

use fqn_estimator::QnScaleEstimator;

fn main() {
    let samples = [
        257.0, 917.0, 236.0, 271.0, 339.0, 19.0, 994.0, 710.0, 411.0, 922.0,
        516.0, 329.0, 405.0, 112.0, 980.0, 308.0, 918.0, 83.0, 116.0, 122.0,
        329.0, 227.0, 541.0, 774.0, 455.0, 706.0, 151.0, 829.0, 463.0, 763.0,
        453.0, 218.0, 872.0, 326.0, 162.0, 607.0, 689.0, 672.0, 56.0, 997.0, 
        598.0, 920.0, 817.0, 949.0, 155.0, 688.0, 755.0, 721.0, 430.0, 184.0, 
        314.0, 308.0, 709.0, 626.0, 333.0, 307.0, 63.0, 473.0, 594.0, 366.0,
        687.0, 463.0, 46.0, 994.0, 948.0, 392.0, 431.0, 171.0, 413.0, 975.0,
        126.0, 975.0, 337.0, 49.0, 196.0, 463.0, 784.0, 722.0, 522.0, 182.0,
        919.0, 181.0, 120.0, 177.0, 131.0, 612.0, 5.0, 952.0, 663.0, 628.0, 
        648.0, 238.0, 845.0, 354.0, 223.0, 315.0, 985.0, 38.0, 2.0, 34.0,
    ];

    let mut estimator = QnScaleEstimator::new(samples.len());
    estimator.extend(samples);

    let scale: f64 = estimator.estimate().unwrap().into();
    assert!(310.31 < scale && scale < 310.32);
    
    let median = estimator.median().unwrap().to_median();
    assert!(430.49 < median && median < 431.51);
}

功能

  • num-traits:使用num-traits来启用偶数样本的中值

依赖项

~155KB