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

时间:2015-08-01 18:38:45

标签: r matrix time-series correlation

根据来自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"))

感谢您阅读此帖。

错误的形式如下:

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

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

1 个答案:

答案 0 :(得分:1)

您收到错误的原因是您提供的时间序列示例(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

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