# Correlation

**URL:** <https://discourse.julialang.org/t/correlation/6852>\
**Category:** New to Julia\
**Tags:** statistics\
**Created:** [November 3, 2017, 5:47am UTC](https://discourse.julialang.org/t/correlation/6852 "2017-11-03T05:47:31Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [November 3, 2017, 5:47am UTC](https://discourse.julialang.org/t/correlation/6852/1 "2017-11-03T05:47:31Z")

</div>

I have an array of two vectors and I want to compute the correlation of the components. Currently, I am computing this as

```julia
mean([X[j]*X[j]' for j=1:n_batch_iters])

```

which gives the desired result, but I was curious if this is the most efficient approach.

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [November 3, 2017, 6:47am UTC](https://discourse.julialang.org/t/correlation/6852/2 "2017-11-03T06:47:28Z")

</div>

You question is not clear, please give the dimensions of this array and what correlation you are interested in. In any case, try to use Julia’s `cor(x,y)` function if you can.

---

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [November 5, 2017, 2:10am UTC](https://discourse.julialang.org/t/correlation/6852/3 "2017-11-05T02:10:07Z")

</div>

Each `X[j]` is itself an array of length d and there are a total of N of them. Essentially, what I want to compute, is

\frac{1}{N}\sum\_{n=1}^N X\_n^{(i)} X\_n^{(j)}

for each (i,j) pair, with X^{(i)}\_n corresponding to the i-th component of `X[n]`

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [November 5, 2017, 2:35am UTC](https://discourse.julialang.org/t/correlation/6852/4 "2017-11-05T02:35:33Z")

</div>

The covariance of a random variable with itself is the variance, so `var(X)`?

---

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [November 6, 2017, 11:17pm UTC](https://discourse.julialang.org/t/correlation/6852/5 "2017-11-06T23:17:26Z")

</div>

`var` does not appear to take an array of arrays as its arguments.

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [November 7, 2017, 12:25am UTC](https://discourse.julialang.org/t/correlation/6852/6 "2017-11-07T00:25:04Z")

</div>

So what do you do in this case?

1. You can start with a matrix instead of an array of arrays and use `var` directly  
or
2. You can stick with your original implementation (which assumes zero mean vectors)

---

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [November 8, 2017, 4:35am UTC](https://discourse.julialang.org/t/correlation/6852/7 "2017-11-08T04:35:17Z")

</div>

Any thoughts on the efficiency of one method over the other?

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [November 8, 2017, 6:17am UTC](https://discourse.julialang.org/t/correlation/6852/8 "2017-11-08T06:17:33Z")

</div>

Try it and see?
