如何根据某些值定义趋势?

Adn*_*nan 2 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)
Run Code Online (Sandbox Code Playgroud)

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

关于如何实现这一目标的任何想法?

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

谢谢大家的时间。

Mar*_*ker 5

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

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));
Run Code Online (Sandbox Code Playgroud)

(未经测试)

如果斜率为正,则趋势向上;如果为负,则为向下。使用您自己的判断来决定什么样的保证金(正或负)被认为是平坦的。