【问题标题】:Estimating correlation matrix in R with time series?用时间序列估计R中的相关矩阵?
【发布时间】:2015-10-24 05:47:07
【问题描述】:

基于 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 之间的相关性。

【问题讨论】:

  • 我不知道这个包,但是(只是在这里猜测!)看起来该函数没有收到正确的参数,你确定yp 是一个矩阵吗?
  • 没有。 yp 是从 1710 年到 1980 年的观测向量。但是,带有函数 cor(.) 的包 timeSeries 表示“x”必须是“timeSeries 类的单变量对象”。我使用 as.ts(yp) 将向量 yp 转换为时间序列。
  • 好的,明白了。您能否通过dput 提供一点您的数据?
  • 我想知道您的术语是否混淆。没有像单个向量的相关性这样的统计动物。相关性是两个项目的关系。有这样一个东西,例如应用于单个向量的自相关函数。要求所有成对的东西(差异?)可能会建议您改为使用距离矩阵。
  • 这是一个显示 yp 的链接:pastebin.com/XxVL3zNn

标签: r matrix time-series correlation


【解决方案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

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

【讨论】:

  • 感谢您的快速回答!
  • @Mercier,如果此答案对您有用,请单击答案旁边的复选标记,以便其他人知道此问题已得到解决。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 2018-03-15
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2013-06-15
相关资源
最近更新 更多