Using StatsBase.crosscor and finding unexpected answers

Example below:

answer below is 0.66666 and I think it should be 1 since crosscor calculates the correlation of numone with the 1 lag correlation of numtwo which is perfectly correlated

```
numone=[2,3,4,5]
numtwo=[1,2,3,4]
answer=StatsBase.crosscor(numone,numtwo,[1],demean=false)
```

1 Like

Here’s what `crosscor(x, y, [1], demean=false)`

is doing:

```
# Julia 1.5
using LinearAlgebra
numone, numtwo = [2,3,4,5], [1,2,3,4]
x, y = numone[1:end-1], numtwo[2:end]
ra = dot(x,y)/sqrt(dot(numone,numone)*dot(numtwo,numtwo)) # what crosscor does
rb = dot(x,y)/sqrt(dot(x,x)*dot(y,y)) # what you expect
[ra rb]
1×2 Array{Float64,2}:
0.720511 1.0
```

Note that ra~rb for large n, e.g.

```
numone, numtwo = [2:1001;], [1:1000;]
```

but not for small n.

3 Likes