首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R相关时间序列

R相关时间序列
EN

Stack Overflow用户
提问于 2014-02-13 22:56:55
回答 2查看 1.8K关注 0票数 1

我有多个时间序列,我想研究在不同的序列中,某些事件是否在相对相同的时间发生。例如,我有x1和x2,它们都是时间序列,但来自不同的来源,我想知道x1是否与x2相对地同时增加/减少。你会怎么做。我知道我可以用相关性来衡量一般的关系。

但是,是否有办法将他们一起移动的时期与他们偏离的时期分开呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 23:26:03

下面是一个例子,我们在一个30天的窗口中计算滚动相关性,然后绘制结果:

代码语言:javascript
运行
复制
library(zoo)
roll.corrs <- rollapplyr(dates, 30, function(index) cor(df1[index, "x1"], df1[index, "x2"]), fill=NA)
library(ggplot2)
qplot(as.Date(dates), roll.corrs)

或者,更短:

代码语言:javascript
运行
复制
z <- zoo(df1, as.Date(rownames(df1)))
r <- rollapplyr(z, 30, function(x) cor(x[,1], x[,2]), by.column = FALSE) 
autoplot(r)

qplot输出显示:

你可以清楚地看到,在时间序列之间有两个特别高相关性的部分。这些数据被有意地设计成具有高相关性和低相关性的周期。以下是数据:

代码语言:javascript
运行
复制
base <- c(rep(1, 100), 1:50, rep(50, 100), 50:1, rep(1, 65))
dates <- as.character(seq(as.Date("2013-01-01"), len=365, by="1 day"))

set.seed(1)
df1 <- data.frame(  
  x1=base+rnorm(365, 0, 5),
  x2=base+rnorm(365, 0, 5),
  row.names=dates
)
票数 4
EN

Stack Overflow用户

发布于 2014-02-13 23:20:26

您试过查看整个时间序列的子间隔内的相关性吗?然后,您必须决定做子区间的大小,或者为“充分相关”设置一个条件,等等。

编辑--另一个想法--可以定义一个函数F(tau),它是[0,tau]子区间中两个时间序列之间的关联,并查看它的导数?但这可能假设它与T=0有很好的相关性。

也许人们可以找到两者密切相关的“种子”时间,然后通过将G(width)定义为[seed, seed + width]中的相关性,并类似地检查与宽度有关的导数,来增加其周围的间隔?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21767374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档