如何从时间序列中找到线性趋势?

How to find a linear trend from a time series?

我将如何从时间序列中找出线性趋势?

我知道时间序列是 y = {y1,...yn} 或第一种情况 {1.000000000000000 0.917457418407746 0.683456229182811}。假定每个元素 yi 在时间 ti = i 被采样。

需要拟合的多项式是1次

下面是我尝试过的。

function [ linCoeffs ] = getLinearTrend(y)

   y = [1.000000000000000,0.917457418407746,0.683456229182811];
   x = ;
   linCoeffs = polyfit(y,x,1);

end

这并不多,因为我对如何处理 x 值感到困惑。通常 y 是一个输入值,但为了测试我只是把它留在里面。

您似乎以错误的顺序向 polyfit 提供了参数。第一个参数采用 x 轴的值,在这种情况下,对应于 i 给出的采样时间。 second 参数采用 y 值。所以你想要这样的东西:

function linCoeffs = getLinearTrend(y)

   linCoeffs = polyfit(1:size(y,2), y, 1);

end

根据您的示例 y,结果为:

y = [1.000000000000000,0.917457418407746,0.683456229182811];

getLinearTrend(y)
ans =

  -0.15827   1.18351