dcvn/moving-average

计算移动平均值

v1.1.0 2023-07-14 23:13 UTC

This package is auto-updated.

Last update: 2024-09-15 01:45:44 UTC


README

GitHub license GitHub release

移动平均

计算移动平均值。

此包可以帮助您在PHP项目中处理移动平均。

例如,温度或重量的常规测量不是连续的;为了了解随时间的变化方向,您需要移动平均。

为了使数字更直观,我为本文档生成了示例图表。

您还可以查看测试用例以获取一些使用示例。

安装

使用composer: composer require dcvn/moving-average

大数据或小数据:数组生成器

统计数据可能包含大量数据集,此时生成器可以帮助。

MovingAverage支持输入和输出都使用数组和生成器。

<?php
$array = $movingAverage->getCalculatedFromArray($sourceArray);

$generator = $movingAverage->generateFromArray($sourceArray);

$array = $movingAverage->getCalculatedFromGenerator($sourceGenerator);

$generator = $movingAverage->generateFromGenerator($sourceGenerator);

对所有4种变体都有测试。使用它们开始!

平均周期、延迟和加权平均。

以下图表使用了这组值

<?php $values = [0, 2, 4, 6, 8, 4, 6, 8, 12, 10, 6, 8, 10, 14, 8, 10];

1. 无平均

计算1个周期的“平均”值,您将得到与输入值完全相同的一组值

<?php
$movingAverage = new MovingAverage();
$movingAverage->setPeriod(1);

$data = $movingAverage->getCalculatedFromArray($values);

结果值等于输入值,因为周期=1。

Plain values

2. 计算最后n个值的平均

计算当前值和前3个值的平均。

<?php
$movingAverage = new MovingAverage();
$movingAverage->setPeriod(4);

Average last 4 values

3. 计算最后n个值的加权平均

计算当前值和前3个值的平均,具有不同的重要性。在示例中,当前值的重要性最小(w=1),前一个值的重要性最大(w=5)。

<?php
$movingAverage = new MovingAverage(MovingAverage::WEIGHTED_ARITHMETIC);
$movingAverage->setPeriod(4)
    ->setWeights([2, 3, 5, 1]);

Weighted average last 4 values

4. 计算先前n个、当前和后续n个值的平均

计算5个值的平均:前2个、当前和后2个。

<?php
$movingAverage = new MovingAverage();
$movingAverage->setPeriod(5)
    ->setDelay(2);

Average 5 values: 2 before 2 after

5. 计算先前n个、当前和后续n个值的加权平均

计算5个值的平均:前2个、当前和后2个,具有不同的重要性。在示例中,当前值的重要性最大(w=5),过去的重要性较小(4, 2),未来的重要性最小(3, 1)。

<?php
$movingAverage = new MovingAverage(MovingAverage::WEIGHTED_ARITHMETIC);
$movingAverage->setPeriod(5)
    ->setDelay(2)
    ->setWeights([2, 4, 5, 3, 1]);

Average 5 values: 2 before 2 after

本文档中的图表已使用JPGraph生成