Я использую эту логику:
для вычисления наклона набора данных временного ряда. Но мои данные таковы (измерение выходного тока с течением времени), что «наклон» не имеет смысла, поскольку он зависит от относительного масштаба осей. Например, ток, указанный в миллиамперах, будет давать другой наклон, чем ток, представленный в амперах, за тот же период времени. Что мне нужно, так это рассчитать, представляет ли тенденция за указанное время определенный процент увеличения.
Подводя итог, я использую этот запрос 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']);
Но я получаю такие числа, как 5.9808374081288E-10 из-за масштаба временных меток unix.
Каков наилучший способ получить от этого процентное увеличение или уменьшение? Или, точнее, как мне получить значения Y от конечных точек линии тренда?