在 R 中创建自相关随机值

机器算法验证 r 时间序列 随机变量 自相关 滞后
2022-03-15 02:27:50

我们正在尝试创建将用作时间序列的自相关随机值。我们没有引用的现有数据,只想从头开始创建向量。

一方面,我们当然需要一个具有分布及其 SD 的随机过程。

另一方面,必须描述影响随机过程的自相关。向量的值与几个时间滞后的强度下降自相关。例如 lag1 有 0.5、lag2 0.3、lag1 0.1 等。

所以最后向量应该看起来像: 2, 4, 7, 11, 10, 8, 5, 4, 2, -1, 2, 5, 9, 12, 13, 10, 8, 4, 3, 1, -2, -5

等等。

3个回答

我其实经常遇到这个问题。我最喜欢的两种在 R 中生成具有自相关的时间序列的方法取决于我是否想要一个平稳的过程。

对于非平稳时间序列,我使用布朗运动。例如,对于长度 1000,我这样做:

x <- diffinv(rnorm(999))

对于平稳的时间序列,我过滤了高斯噪声。例如,这看起来像:

x <- filter(rnorm(1000), filter=rep(1,3), circular=TRUE)

在这种情况下,如果处的自相关为 0 在其他情况下,我们必须计算变量总和之间的相关性。例如对于,协方差为ττ>2τ=1

Cov(X1;X2)=Cov(Y1+Y2+Y3;Y2+Y3+Y4)=Var(Y2)+Var(Y3)=2.

所以你会看到自协方差线性下降直到,其中是滤波器的长度。nn

您也可以想做长记忆时间序列(如分数布朗运动),但这涉及更多。我有一个 Davies-Harte 方法的 R 实现,如果你愿意,我可以发给你。

如果你有一个给定的自协方差函数,我能想到的最好的模型(就易处理性而言)是一个多元高斯过程,其中,给定滞后,你可以很容易地形成协方差矩阵,R(τ)τ

Σ=[R(0)R(1)...R(N)R(1)R(0)...R(N1)...R(N)R(N1)...R(0)]

的多元高斯中采样数据,即从分布 其中是平均向量。Σ

f(x)=1(2π)N/2|Σ|1/2exp(12(xμ)TΣ1(xμ)),
μ

您可以通过构建自回归过程来生成相关序列,例如 AR(1) 过程X(t)=aX(t1)+e(t). 产生e(0)为您选择的分布使用统一的随机数生成器。然后让X(0)=e(0)得到X(1)=aX(0)+e(1)等等。e(i)使用您的统一随机数连续随机选择。给予X(i)你想要的均值和标准差,可以从噪声序列的均值和方差中推导出来e(i). 选择e(i)适当地。