R 的 ccf 和 Julia 的 crosscor 中使用的方程式是什么?

What is the equation used in R's ccf and Julia's crosscor?

我一直在为这件事绞尽脑汁。现在,除了 Julia 在滞后方面给出了一个看似倒退的结果

julia> crosscor([1,2,3,4], [1,2,3,1])'
1x7 Array{Float64,2}:
 -0.30339  0.0  0.64049  0.13484  -0.37081  -0.40452  0.30339

> print(ccf(c(1,2,3,4), c(1,2,3,1), type="correlation", plot=F))

Autocorrelations of series ‘X’, by lag

    -3     -2     -1      0      1      2      3 
 0.303 -0.405 -0.371  0.135  0.640  0.000 -0.303

这很容易通过反转 x 和 y 来解决("easily" 是相对的,当你需要一个小时的时间来计算时),这些数字与我熟悉的任何方程式都不相似与(反正不多)。

所以,我打开了我的统计教科书,发现了很多我不打算用笔和纸测试的其他公式。我一度怀疑从向量中删除均值起到了作用,所以我尝试不这样做(遗憾的是,这只能在 Julia 中完成)

julia> crosscor([1,2,3,4], [1,2,3,1], demean=false)'
1x7 Array{Float64,2}:
 0.188562  0.518545  0.942809  0.848528  0.518545  0.235702  0.0471405

但这仍然不像我用笔和纸计算的归一化互相关(我可能犯了未决错误)。

简而言之:我需要引用公式,那是什么?

我认为根据 Whosebug 的使用条款可以在此处引用此摘录吗?从 Venables 和 Ripley (2002) 的第 390 页(第 14.1 节)中,您可以找到他们在此处用于 acf() 函数的定义:

如果您查看 R 中 ccf() 函数的源代码(在提示符下键入 "ccf"),您可以看到 acf() 是如何使用的,并且可以询问以上acf()实现与计算有关。