MATLAB:如何创建自相关数据?

时间:2015-11-17 04:11:59

标签: matlab

我想在MATLAB中创建一个自相关数据点的向量,滞后1高于滞后2,依此类推。

如果我查看滞后1数据对(1,2),(3,4),(5,6),...,那么相关性相对较高,但是在滞后2时它会减少。 / p>

我在R

中找到了一种方法
x <- filter(rnorm(1000), filter=rep(1,3), circular=TRUE)

但是,我不确定如何在MATLAB中做同样的事情。理想情况下,我希望能够精确调整数据的自相关性。

1 个答案:

答案 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)测试样本自相关。作为参考,关于时间序列数学的圣经是汉密尔顿的书时间序列分析