如何获得趋势线的端点?

时间:2014-03-17 16:37:02

标签: php mysql trend

我正在使用这个逻辑:

MYSQL Trendline calculation

计算一组时间序列数据的斜率。但我的数据是这样的(随时间测量电流输出),“斜率”没有意义,因为它取决于轴的相对比例。例如,以毫安表示的电流将产生与在相同时间段内以安培表示的电流不同的斜率。我需要的是计算指定时间内的趋势是否代表一定的百分比增长。

总结一下,我正在使用这个SQL查询:

    SELECT COUNT(*) AS N,SUM(UNIX_TIMESTAMP(timestamp)) AS Sum_X,
        SUM(UNIX_TIMESTAMP(timestamp) * UNIX_TIMESTAMP(timestamp)) AS Sum_X2,
        SUM(max_current) AS Sum_Y,
        SUM(max_current*max_current) AS Sum_Y2,
        SUM(UNIX_TIMESTAMP(timestamp) * max_current) AS Sum_XY
        FROM circuit_history
        WHERE circuit_filename = '".$cfn."'
        AND timestamp > date_sub(now(), interval 60 day)";

我的斜率是这样计算的:

$slope = ($row['N'] * $row['Sum_XY'] - $row['Sum_X'] * $row['Sum_Y'])/($row['N'] * $row['Sum_X2'] - $row['Sum_X'] * $row['Sum_X']);

但由于unix时间戳的规模,我得到的数字如5.9808374081288E-10。

从这个增加或减少百分比的最佳方法是什么?或者更具体地说,如何从趋势线的端点获取Y值?

1 个答案:

答案 0 :(得分:1)

  1. 想要将您的等级从安培/时间更改为毫安/时间?乘以1000
  2. Unix时间戳问题?因为你的时间表可以追溯到1970年1月1日。选择一个时间戳作为你的“零”时间并从其他所有时间中减去它。