用时间序列估计 R 中的相关矩阵?

Estimating correlation matrix in R with time series?

我有一个基于 R 数据集的 1710 年到 1980 年太阳黑子数量的时间序列。

我正在尝试估计 "y" 值的相关矩阵。我尝试使用 timeSeries 包中的 cor(.) 函数(https://cran.r-project.org/web/packages/timeSeries/timeSeries.pdf)(第 64 页)。但是没用。

让 "yp" 成为我从 1710 年到 1980 年的观察向量(时间序列对象)。我的代码是:

CorrelationMatrice=cor(yp,y=NULL,use = "all.obs", method = c("pearson"))

感谢您阅读本文post。

错误的形式如下:

Error in cor(yp, y = NULL, use = "all.obs", method = c("pearson")) : 
  give 'x' and 'y' or 'x' as a matrix

我希望我的相关矩阵给出每对观察值 ci 和来自 yp 的 cj 之间的相关性。

您收到错误的原因是您提供的时间序列示例 (yp) 是一个向量。如果您仔细查看 timeSeries 包的文档,您会发现所使用的样本时间序列是矩阵而不是向量,这就是您收到以下错误消息的原因

Error in cor(yp, y = NULL, use = "all.obs", method = c("pearson")) : give 'x' and 'y' or 'x' as a matrix

如果对 yp 使用矩阵而不是向量,则不会出现错误。 示例:

my_ts <- <- as.data.frame(timeSeries(matrix(rnorm(24), 12), timeCalendar()))

cor(my_ts, y = NULL, use = "all.obs", method = c("pearson"))

           TS.1       TS.2
TS.1 1.00000000 0.02275777
TS.2 0.02275777 1.00000000

您可以尝试对 X 和 Y 使用向量 cor(yp, y = yp, use = "all.obs", method = c("pearson")) 并获得 271x271 的相关矩阵,但没有多大意义,因为您会收到 1 的相关性。

cor(yp, y = yp, use = "all.obs", method = c("pearson"))
[1] 1

为了生成您正在寻找的相关矩阵,您需要比较两个不同的时间序列,而不是将一次性时间序列与其自身进行比较。例如,您可以将道琼斯工业平均指数与特定时间段内的 Euro/Dollar 汇率进行比较。