我有两个数据集,我需要估计这两个数据集中序列的相关性。例如,一个序列in的长度为189,另一个序列的长度为192。这些序列的终点对应于相同的时间段,即2015年12月。不同之处在于本系列的起点。我需要估计两个序列中从最后一个点开始的12个数据点的块的相关性。对于ex,第一个区块将从2015年1月到2015年12月,第二个区块将从2014年1月到2014年12月。由于最后一个块将具有不相等的数据长度,因此可以使数据长度相等,并且最后一个块的长度可以小于12个月。例如,在本例中,最后一个块的长度为9个月。如何创建一个循环并运行这个?我尝试了以下方法。这给了我结果,但我得到了所有循环运行的相同的相关值。不知道我哪里错了。
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
}发布于 2017-09-10 04:15:47
你不需要为此创建一个for循环解决方案。没有匹配的观察长度是研究中常见的问题,相关函数中有内置的答案来处理这个问题。如果在同一数据帧中有两个长度不同的变量,以下是一些选项:
#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在同一个表中,并且在本例中可能按日期匹配,那么这些选项应该可以解决问题。
https://stackoverflow.com/questions/46128303
复制相似问题