gpt4 book ai didi

php - 如何确定数据是在 PHP 中增加还是减少

转载 作者:行者123 更新时间:2023-12-05 08:24:44 25 4
gpt4 key购买 nike

假设我们在数组中有以下数据:

$data1 = [3,5,7,6,8,9,13,14,17,15,16,16,16,18,22,20,21,20];

$data2 = [23,18,17,17,16,15,16,14,15,10,11,7,4,5];

$data1 一样,我们可以说数据在增加,而在 $data2 中数据在减少。

用PHP怎么知道数据在增加还是在减少,有没有办法衡量知道增加和减少的速率,即百分比。

编辑

根据收到的评论,我有了一个想法,这就是我尝试过的方法。我想达到的目标;

  1. 我想知道传入数据的趋势是向上还是向下。
  2. 还想知道数据上升或下降的速率。例如 $data1 = [1,3,5];$data2 = [1, 20, 55]; 不同。您可以看到 $data1 的增长率与 $data2 不同。
function increaseOrDecrease($streams = []) : array
{
$streams = [3,5,7,6,8,9,13,14,17,15,16,16,16,18,22,20,21,20]; // For the increasing

//$streams = [23,18,17,17,16,15,16,14,15,10,11,7,4,5]; // For the decreasing

$first = 0;
$diff = [];

foreach ($streams as $key => $number) {
if ($key != 0) {
$diff[] = $number - $first;
}
$first = $number;
}

$avgdifference = array_sum($diff)/count($diff); //Get the average

$side = $avgdifference > 0 ? 'UP' : 'DOWN';

$avgsum = array_sum($streams)/count($streams);

$percentage = abs($avgdifference)/$avgsum * 100;

if ($side == 'UP') {
$data = [
'up' => true,
'percent' => $percentage,
];
}else {
$data = [
'up' => false,
'percent' => $percentage,
];
}

return $data;
}

我需要一些帮助来重构此代码或解决问题的最佳方法。

最佳答案

有多种方法可以分析数据和提取趋势。最经典的方法叫做 least squares .这是一种拟合线的方法通过数据。该方法计算直线的斜率和截距。趋势只是斜率。

公式给出here .

PHP 实现如下:

function linearRegression($x, $y)
{
$x_sum = array_sum($x);
$y_sum = array_sum($y);
$xy_sum = 0;
$x2_sum = 0;
$n = count($x);
for($i=0;$i<$n;$i++)
{
$xy_sum += $x[$i] * $y[$i];
$x2_sum += $x[$i] * $x[$i];
}
$beta = ($n * $xy_sum - $x_sum * $y_sum) / ($n * $x2_sum - $x_sum * $x_sum);
$alpha = $y_sum / $n - $beta * $x_sum / $n;
return ['alpha' => $alpha, 'beta' => $beta];
}

function getTrend($data)
{
$x = range(1, count($data)); // [1, 2, 3, ...]
$fit = linearRegression($x, $data);
return $fit['beta']; // slope of fitted line
}

例子:

echo getTrend([1, 2, 3]); // 1
echo getTrend([1, 0, -1]); // -1
echo getTrend([3,5,7,6,8,9,13,14,17,15,16,16,16,18,22,20,21,20]); // 1.065
echo getTrend([23,18,17,17,16,15,16,14,15,10,11,7,4,5]); // -1.213

关于php - 如何确定数据是在 PHP 中增加还是减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73278388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com