php - 如何根据一些值来定义趋势?

标签 php math

我试图标记一些趋势,所以我将 1 作为最低值,将 5 作为最大值。

例如,

我可能有以下情况:

5,4,5,5   (UP)
3,4,      (UP)
4,3,3     (DOWN)
4,4,4,4,  (FLAT - this is OK for all same numbers)

我计划将无限数量的有序值作为输入,作为输出我将只显示 (UP)、(DOWN) 或 (FLAT) 图像。

关于如何实现这一点有什么想法吗?

对不起,如果我的描述不够。

谢谢大家的宝贵时间。

最佳答案

使用最小二乘拟合计算值的“斜率”。

function leastSquareFit(array $values) {
    $x_sum = array_sum(array_keys($values));
    $y_sum = array_sum($values);
    $meanX = $x_sum / count($values);
    $meanY = $y_sum / count($values);
    // calculate sums
    $mBase = $mDivisor = 0.0;
    foreach($values as $i => $value) {
        $mBase += ($i - $meanX) * ($value - $meanY);
        $mDivisor += ($i - $meanX) * ($i - $meanX);
    }

    // calculate slope
    $slope = $mBase / $mDivisor;
    return $slope;
}   //  function leastSquareFit()

$trend = leastSquareFit(array(5,4,5,5));

(未经测试)

如果斜率为正,趋势向上;如果为负,则为向下。使用您自己的判断来决定什么边距(正或负)被视为持平。

关于php - 如何根据一些值来定义趋势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8531708/

相关文章:

php - MySQL 持久连接

php - 为什么我的 PHP 代码有时会在 MySQL 数据库中创建多行?

objective-c - 计算垂直于另一条线的中点的线

optimization - 解决 3d 多边形网格的最佳对齐问题

php - 有人可以解释这 2 个引用用法在 PHP 中的区别吗?

javascript - 使用 PHP 创建一个新的 PHP 文件

php - html 表并用带有空行的 php 填充

javascript - 将 if 条件转换为具有动态乘数的函数

c++ - 检查四个点是否在同一平面上,仅使用距离(验证共线性)

找到矩形长度和宽度的算法?