我想在MATLAB中创建一个自相关数据点的向量,滞后1高于滞后2,依此类推。
如果我查看滞后1数据对(1,2),(3,4),(5,6),...,那么相关性相对较高,但是在滞后2时它会减少。 / p>
我在R
中找到了一种方法x <- filter(rnorm(1000), filter=rep(1,3), circular=TRUE)
但是,我不确定如何在MATLAB中做同样的事情。理想情况下,我希望能够精确调整数据的自相关性。
答案 0 :(得分:1)
一组静止时间序列中自相关的标准模型被称为“自回归模型”,例如。具有1个项的自回归模型被称为AR(1)并且是:
y_t = a + b*y_{t-1} + e_t
AR(1)听起来很简单,但它变成了一个非常强大的工具。例如。具有p个自回归项的AR(p)实际上是p维向量上的AR(1)。 (Check Wikipedia page.)注意b = 1,给出非平稳的随机游走。
更直观的方式来编写正在发生的事情(在具有| b |&lt; 1的固定情况下)是定义u = a / (1 - b)
(结果u
是AR(1)的无条件均值),然后用一些代数:
y_t - u = b * ( y_{t-1} - u) + e_t
也就是说,与无条件均值u
的差异会受到一些衰减项b的影响,然后会增加一个冲击项e_t。 (你希望-1<b<1
获得稳定性)
由于e_t表示冲击项,因此非常容易模拟。例如。模拟AR(1):
a = 0; b = .4; sigma = 1; T = 1000;
y0 = a / (1 - b); %eg initialize to unconditional mean of stationary time series
y = zeros(T,1);
y(1) = a + b * y0 + randn() * sigma;
for t = 2:T
y(t) = a + b * y(t-1) + randn() * sigma;
end
这段代码并不意味着快速,而是说明性的。 AR(1)模型意味着某种类型的相关结构,但添加AR或MA术语,您可以适应一些非常时髦的东西。 (MA是移动平均模型)
可以使用autocorr(y)
测试样本自相关。作为参考,关于时间序列数学的圣经是汉密尔顿的书时间序列分析。