如何从R中的互相关函数计算p值

时间:2016-07-03 19:21:05

标签: r time-series p-value cross-correlation

我使用R中的ccf()计算了两个时间序列的互相关。我知道如何得出置信限制:

ccf1 <- ccf(x=x,y=y,lag.max=5,na.action=na.pass, plot=F)
upperCI <- qnorm((1+0.95)/2)/sqrt(ccf1$n.used)
lowerCI <- -qnorm((1+0.95)/2)/sqrt(ccf1$n.used)

但我真正需要的是最大相关性的p值。

ind.max <- which(abs(ccf1$acf[1:11])==max(abs(ccf1$acf[1:11])))
max.cor <- ccf1$acf[ind.max]
lag.opt <- ccf1$lag[ind.max] 

如何计算此p值?我搜索过高低,但无法在任何地方找到一个好的答案。

1 个答案:

答案 0 :(得分:3)

获得p值非常简单。

在Null Hypothesis下,相关性为0,它通常是分布式的:

Z ~ N(0, 1/sqrt(ccf1$n.used))

因此,对于您观察到的最大相关max.cor,其p值只是概率Pr(Z > |max.cor|),可以通过以下方式计算:

2 * (1 - pnorm(abs(max.cor), mean = 0, sd = 1/sqrt(ccf1$n.used)))

<强>后续

  

这真的很简单吗? ccf一次计算很多相关性!

你是说ccf计算不同滞后的相关性?好吧,如果你有大量的观察N,每个滞后的ACF标准差是相同的:1/sqrt(N)。这就是为什么置信区间是两条水平线。