繁体   English   中英

创建对称自相关矩阵

[英]Creating symmetric autocorrelation matrix

我正在为时间序列数据向量执行自相关过程。 我期待为给定的时间序列创建一个由自相关组成的对称矩阵。

我使用acf()函数来检查我的值,它返回:

系列'acfData'的自相关,滞后

     0      1      2      3      4      5      6      7      8      9     10     11     12     13 
 1.000 -0.038  0.253  0.266  0.250  0.267 -0.182  0.281 -0.013 -0.067 -0.122 -0.115 -0.023 -0.337 

为了实现矩阵,我然后对数据执行data.frame更改,以允许我按指定的滞后值滑动值:

dataF <- data.frame("data" = acfData)
names(dataF)[1] <- "acfData"
dataLag <- slide(dataF, "acfData", slideBy = -1)

给:

> head(dataLag)
  acfData acfData-1
1      -7        NA
2       5        -7
3       4         5
4     -17         4
5       6       -17
6     -10         6

当我执行cor()函数时,这给出了正确的2x2矩阵:

> cor(na.omit(dataLag))
              acfData   acfData-1
acfData    1.00000000 -0.03842146
acfData-1 -0.03842146  1.00000000

然而,将其扩展到第二时滞矩阵导致先前的值改变。

    dataLag <- cbind(dataLag, slide(dataF, "acfData", slideBy = -2)[2])
> head(dataLag)
      acfData acfData-1 acfData-2
    1      -7        NA        NA
    2       5        -7        NA
    3       4         5        -7
    4     -17         4         5
    5       6       -17         4
    6     -10         6       -17

再次执行cor()函数会导致:

> cor(na.omit(dataLag))
              acfData   acfData-1   acfData-2
acfData    1.00000000 -0.03156163  0.27502462
acfData-1 -0.03156163  1.00000000 -0.07361449
acfData-2  0.27502462 -0.07361449  1.00000000

如您所见,1步滞后数据相关性已发生变化。 我假设这是由于na.omit()可能会删除整个前两行,因为第二个延迟的介绍给出了两个NA ,但我不知道如何在第一个滞后计算中正确省略它们。

正如Ben Bolker在评论中所提到的,只需添加“pairwise.complete.obs”的“use”参数就可以正确省略NA。

该功能的新回报是:

> cor(dataLag, use="pairwise.complete.obs")
              acfData   acfData-1   acfData-2
acfData    1.00000000 -0.03842146  0.27502462
acfData-1 -0.03842146  1.00000000 -0.07361449
acfData-2  0.27502462 -0.07361449  1.00000000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM