我如何从时间序列中找到线性趋势?
我知道时间序列为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将是一个输入值,但对于测试,我只是把它留在了。
答案 0 :(得分:2)
您似乎以错误的顺序向polyfit
提供了参数。第一个参数采用 x 轴的值,在这种情况下,它对应于 i 给出的采样时间。 第二个参数采用 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