dcvn/moving-average 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dcvn/moving-average

Composer 安装命令:

composer require dcvn/moving-average

包简介

Calculate Moving Averages

README 文档

README

GitHub license GitHub release

Moving Average

Calculate Moving Averages.

This package can help when you need moving averages in your PHP project.

For example, regular measurements of temperature or weight are not continuous; to have an idea of direction over time, a moving average is what you need.

To make numbers visual, I generated some example graphs for this doc.

You can also have a look at the tests for some usage examples.

Installation

Using composer: composer require dcvn/moving-average

Big or small data: Arrays and Generators

Statistics can have large data sets, and then Generators can help.

MovingAverage supports both Arrays and Generators for both input and output.

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

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

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

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

There are tests for all 4 variants. Use them to get started!

Average periods, delays, and weighted average.

The graphs below use this set of values:

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

1. No average

Calculate the "average" over a period of 1, you will get the exact same set of values:

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

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

Result values are equal to input values, because of period=1.

Plain values

2. Average over the last n values

Calculate average over the current value and 3 previous values.

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

Average last 4 values

3. Weighted average over the last n values

Calculate average over the current value and 3 previous values, with different importance. In the example, current value is least important (w=1), previous value most (w=5).

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

Weighted average last 4 values

4. Average over previous n, current, and next n values.

Calculate average over 5 values: previous 2, current, and next 2.

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

Average 5 values: 2 before 2 after

5. Weighted average over previous n, current, and next n values.

Calculate average over 5 values: previous 2, current, and next 2, with different importance. In the example, the current value is most important (w=5), past less (4, 2), future least (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

Graphs in this doc have been generated using JPGraph

统计信息

  • 总下载量: 9.95k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-12-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固