如何从时间序列中找到线性趋势?
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
我将如何从时间序列中找出线性趋势?
我知道时间序列是 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