首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2个时间序列中大小不等的数据块之间的运行关联

2个时间序列中大小不等的数据块之间的运行关联
EN

Stack Overflow用户
提问于 2017-09-09 15:37:52
回答 1查看 1.6K关注 0票数 0

我有两个数据集,我需要估计这两个数据集中序列的相关性。例如,一个序列in的长度为189,另一个序列的长度为192。这些序列的终点对应于相同的时间段,即2015年12月。不同之处在于本系列的起点。我需要估计两个序列中从最后一个点开始的12个数据点的块的相关性。对于ex,第一个区块将从2015年1月到2015年12月,第二个区块将从2014年1月到2014年12月。由于最后一个块将具有不相等的数据长度,因此可以使数据长度相等,并且最后一个块的长度可以小于12个月。例如,在本例中,最后一个块的长度为9个月。如何创建一个循环并运行这个?我尝试了以下方法。这给了我结果,但我得到了所有循环运行的相同的相关值。不知道我哪里错了。

代码语言:javascript
复制
correl=data.frame(x=numeric(0))
r=nrow(US)
s=nrow(Argentina)

a=ifelse(r<s,r,s)

for (i in 1:(a%/%12)) {
  if(i<a%/%12){
    elmnt1= US[r-11:r,]$IIP
    elmnt2= Argentina[s-11:s,]$IIP
  } else {
    elmnt1= US[1:r%%12,]$IIP
    elmnt2=Argentina[1:s%%12,]$IIP
  }
  corr=cor(elmnt1, elmnt2)
  correl$x[i,]=corr
  r=r-12
  s=s-12
}
EN

回答 1

Stack Overflow用户

发布于 2017-09-10 04:15:47

你不需要为此创建一个for循环解决方案。没有匹配的观察长度是研究中常见的问题,相关函数中有内置的答案来处理这个问题。如果在同一数据帧中有两个长度不同的变量,以下是一些选项:

代码语言:javascript
复制
#Use cor.test(), which automatically matches lengths (i.e. excludes NAs):
cor.test(x,y)

#Or add the following argument to the cor() function for the same purpose:
cor(x,y,use='complete.obs')

只要您的x和y在同一个表中,并且在本例中可能按日期匹配,那么这些选项应该可以解决问题。

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

https://stackoverflow.com/questions/46128303

复制
相关文章

相似问题

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