dcvn / moving-average
计算移动平均值
v1.1.0
2023-07-14 23:13 UTC
Requires
- php: ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-15 01:45:44 UTC
README
移动平均
计算移动平均值。
此包可以帮助您在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。
2. 计算最后n个值的平均
计算当前值和前3个值的平均。
<?php $movingAverage = new MovingAverage(); $movingAverage->setPeriod(4);
3. 计算最后n个值的加权平均
计算当前值和前3个值的平均,具有不同的重要性。在示例中,当前值的重要性最小(w=1),前一个值的重要性最大(w=5)。
<?php $movingAverage = new MovingAverage(MovingAverage::WEIGHTED_ARITHMETIC); $movingAverage->setPeriod(4) ->setWeights([2, 3, 5, 1]);
4. 计算先前n个、当前和后续n个值的平均
计算5个值的平均:前2个、当前和后2个。
<?php $movingAverage = new MovingAverage(); $movingAverage->setPeriod(5) ->setDelay(2);
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]);
本文档中的图表已使用JPGraph生成