如何在矩阵上创建Julia中的简单协方差

时间:2017-01-26 17:07:54

标签: julia

使用Julia 0.5。鉴于:

Supertech = [-.2 .1 .3 .5];
Slowpoke = [.05 .2 -.12 .09];

我如何在世界上获得协方差。在Excel中我只是说

=covariance.p(Supertech,Slowpoke)

它给了我-0.004875

的正确答案

对于我的生活,我无法弄清楚如何使用StatsBase.cov()

来实现这一目标

我已经尝试将其放入以下矩阵中:

X = [Supertech; Slowpoke]'

这给了我一个很好的:

4×2 Array{Float64,2}:
 -0.2   0.05
  0.1   0.2 
  0.3  -0.12
  0.5   0.09 

但我不能让这件事变得简单。当我尝试使用WeightedVector类型时,我总是想出尺寸不匹配。

1 个答案:

答案 0 :(得分:4)

语法[-.2 .1 .3 .5]不会创建向量,它会创建一行矩阵。 cov function实际上是在基础Julia中定义的,但它需要向量。因此,您只需要使用逗号语法在第一个位置创建向量([-.2, .1, .3, .5]),或者您可以使用vec函数将矩阵重新整形为一维向量。它默认使用"corrected" covariance,而Excel使用"未修正的"协方差。您可以使用第三个参数指定您不希望进行此更正。

julia> cov(vec(Supertech), vec(Slowpoke))
-0.0065

julia> cov(vec(Supertech), vec(Slowpoke), false)
-0.004875