我使用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值?我搜索过高低,但无法在任何地方找到一个好的答案。
答案 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)
。这就是为什么置信区间是两条水平线。