Cross-correlation 的 5 个时间序列(距离)和解释
Cross-correlation of 5 time series (distance) and interpretation
非常感谢您提供一些意见!
我有 5 个时间序列的数据(下图中是该系列中 1 步骤的示例),其中该系列中的每个步骤都是物种的垂直剖面相隔 6 小时调查的海洋目击事件。所有 5 个步骤垂直间隔 0.1m(时间为 6h)。
我想要做的是计算所有系列之间的 多元 cross-correlation 以找出随着时间的推移配置文件最相关和最稳定的延迟。
简介示例:
我发现 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 命令会产生以下结果:
我现在的问题是,是否有人可以就我的方向是否正确或是否有更适合的软件包和命令提供一些意见?
因为默认图形没有任何标题等。我在看什么,特别是在 ccm 图形中?
某处提出了ACF命令,但我可以在这里使用吗?在它的文档中说......计算自协方差或自相关......我认为这不是我想要的。但话又说回来,它似乎是唯一可以在多变量上工作的命令。我很困惑。
具有显着性值的图显示在滞后 150(15 米)后 p 值增加。你如何解释我的数据? 0.1 的物种目击间隔和高达 100-150 的许多滞后是否显着?这是否意味着类似的目击峰值在 5 time-steps 范围内以 150 滞后即 15 米的比例稳定?
无论哪种方式,如果以前使用过此功能的人可以解释我在看什么,那就太好了!非常感谢任何意见!
您可以使用基本 R
函数 ccf()
,它将估计任意两个变量 x 和 [=27= 之间的互相关函数]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]
.[=21 之间相关性的估计值=]
尽管如此,ccf 仅针对或多或少呈正态分布的数据定义,但您的数据显然因所有这些零而过度分散。因此,如果缺乏适当的转换,您真的应该研究 "association" 的其他指标,例如根据熵估计的互信息。我建议检查 R
包 entropy
和 infotheo
.
非常感谢您提供一些意见!
我有 5 个时间序列的数据(下图中是该系列中 1 步骤的示例),其中该系列中的每个步骤都是物种的垂直剖面相隔 6 小时调查的海洋目击事件。所有 5 个步骤垂直间隔 0.1m(时间为 6h)。
我想要做的是计算所有系列之间的 多元 cross-correlation 以找出随着时间的推移配置文件最相关和最稳定的延迟。
简介示例:
我发现 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 命令会产生以下结果:
我现在的问题是,是否有人可以就我的方向是否正确或是否有更适合的软件包和命令提供一些意见?
因为默认图形没有任何标题等。我在看什么,特别是在 ccm 图形中?
某处提出了ACF命令,但我可以在这里使用吗?在它的文档中说......计算自协方差或自相关......我认为这不是我想要的。但话又说回来,它似乎是唯一可以在多变量上工作的命令。我很困惑。
具有显着性值的图显示在滞后 150(15 米)后 p 值增加。你如何解释我的数据? 0.1 的物种目击间隔和高达 100-150 的许多滞后是否显着?这是否意味着类似的目击峰值在 5 time-steps 范围内以 150 滞后即 15 米的比例稳定?
无论哪种方式,如果以前使用过此功能的人可以解释我在看什么,那就太好了!非常感谢任何意见!
您可以使用基本 R
函数 ccf()
,它将估计任意两个变量 x 和 [=27= 之间的互相关函数]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]
.[=21 之间相关性的估计值=]
尽管如此,ccf 仅针对或多或少呈正态分布的数据定义,但您的数据显然因所有这些零而过度分散。因此,如果缺乏适当的转换,您真的应该研究 "association" 的其他指标,例如根据熵估计的互信息。我建议检查 R
包 entropy
和 infotheo
.