在R中创建自相关随机值


11

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

一方面,我们当然需要具有分布及其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

等等。

Answers:


11

实际上,我经常遇到这个问题。我最喜欢的两种在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.

因此,您会看到自协方差线性下降直至 n 哪里 n 是过滤器的长度。

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


为了了解较长的存储时间序列,我推荐沃纳尔(Wornell)1996年的书(链接:books.google.cl/books/about/…),:-)。尽管长存储过程的易处理性并不那么“容易”,但您仍然可以做到。
内斯托尔·

我使用了您的方法,它通常可以正常工作,但是在过滤器中使用的目标函数和所得的自相关函数之间会出现微小的偏差。请看一下这个问题:stats.stackexchange.com/questions/176722/…–
nnn

7

如果您具有给定的自协方差函数,那么我可以想到的最佳模型(就可处理性而言)是多元高斯过程,其中,给定自协方差函数 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μ)),
哪里 μ 是均值向量。

5

您可以通过构造自回归过程来生成相关序列,例如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) 适当地。


4
可能值得在arima.sim()这里指出该功能的存在。
fmark 2012年

确保那些现在R的人应该如OP所希望的那样为在R中的实施提出建议。
Michael R. Chernick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.