我很欣赏这方面的一些意见!
我有5个时间序列的数据(系列中 1 步骤的一个例子在下图中),其中系列中的每一步都是海洋中物种目击的垂直剖面图。相隔6小时进行了调查。所有5个步骤垂直间隔0.1米(及时间6小时)。
我想要做的是计算所有系列之间的多元互相关,以便找出概况最相关且在一段时间内最稳定的滞后。
我发现R中的文档并不那么好,所以我到目前为止所做的是使用带有ccm函数的MTS包来创建互相关矩阵。但是,使用稀疏文档对数字的解释相当困难。我非常感谢你们的帮助。
数据示例: http://pastebin.com/embed_iframe.php?i=8gdAeGP4 保存在文件cross_correlation_stack.csv中或根据需要更改。
library(dplyr)
library(MTS)
library(data.table)
d1 <- file.path('cross_correlation_stack.csv')
d2 = read.csv(d1)
# USING package MTS
mod1<-ccm(d2,lag=1000,level=T)
#USING base R
acf(d2,lag.max=1000)
# MQ plot also from MTS package
mq(d2,lag=1000)
此:
和此:
我现在的问题是,是否有人可以就我是否朝着正确的方向提出一些意见,或者是否有更适合的包和命令?
由于默认数字没有得到任何标题等我在看什么,特别是在ccm数字?
ACF命令是在某处提出的,但我可以在这里使用吗?在它的文档中它说...计算自协方差或自相关...我认为这不是我想要的。但话说再说它是唯一可以多变量工作的命令。我很困惑。
具有显着性值的图表显示,在150(15米)的滞后之后,p值增加。您如何理解我的数据呢?物种目击的0.1个间隔和高达100-150的许多滞后是重要的?这是否意味着目击中的高峰在5个时间段内保持稳定,在150英里(又称15米)的范围内?
无论哪种方式,如果之前使用过这个的人可以解释我在看什么,那就太好了!任何意见都非常感谢!
答案 0 :(得分:1)
您可以使用基础R
函数ccf()
,它将估算任何两个变量 x 和 y 之间的互相关函数。但是,它仅适用于向量,因此您必须遍历d1
中的列。类似的东西:
cc <- vector("list",choose(dim(d1)[2],2))
par(mfrow=c(ceiling(choose(dim(d1)[2],2)/2),2))
cnt <- 1
for(i in 1:(dim(d1)[2]-1)) {
for(j in (i+1):dim(d1)[2]) {
cc[[cnt]] <- ccf(d1[,i],d1[,j],main=paste0("Cross-correlation of ",colnames(d1)[i]," with ",colnames(d1)[j]))
cnt <- cnt + 1
}
}
这将绘制每个估计的CCF并将估计值存储在列表cc
中。重要的是要记住ccf(x,y)
返回的lag- k 值是对x[t+k]
和y[t]
之间相关性的估计。
然而,所有这些都表明,ccf仅针对正常分布的数据进行定义,但是您的数据明显过多地分散了所有这些零。因此,缺乏一些适当的转换,你应该真正研究“关联”的其他指标,例如从熵估计的互信息。我建议您查看R
个软件包entropy
和infotheo
。