Verwenden von Julia 0.5. Gegeben:So erstellen Sie einfache Kovarianz in Julia auf einer Matrix
Supertech = [-.2 .1 .3 .5];
Slowpoke = [.05 .2 -.12 .09];
Wie in der Welt kann ich eine Kovarianz bekommen. In Excel, ich sage nur
=covariance.p(Supertech,Slowpoke)
und es gibt mir die richtige Antwort von -0.004875
Für das Leben von mir, dass ich nicht herausfinden kann, wie dies mit zur Arbeit kommen StatsBase.cov()
I‘ habe versucht, diese in eine Matrix, wie wenn man:
X = [Supertech; Slowpoke]'
, die mir ein schönes gibt:
4×2 Array{Float64,2}:
-0.2 0.05
0.1 0.2
0.3 -0.12
0.5 0.09
aber ich kann nicht diese einfache Sache zu arbeiten. Wenn ich versuche, den WeightedVector-Typ zu verwenden, kommt es immer wieder zu Dimensionsabweichungen.
Danke! Nun ... Gibt es eine Möglichkeit, dies in einer vektorisierten Weise zu tun, so dass ich bei einer Matrix von A = n Vektoren einfach 'cov (A, false)' sagen und einen Vektor oder eine eindimensionale Matrix zurückbekommen kann alle Kovarianzen? – bauhaus9
Ja, aber es wird eine [Kovarianzmatrix] (https://en.wikipedia.org/wiki/Covariance_matrix) zurückgegeben. Z. B. mit einer Drei-Säulen-Matrix, es wird eine 3x3-Matrix zurück, wo das Element an den '(i, j)' die Kovarianz zwischen Spalte 'I' und 'J'. –
Ok, ich bin immer noch verwirrt. Hier ist eine modifizierte Version des Codes oben, diesmal mit einer Schleife Aufwand die Kovarianz calc, die funktioniert: 'mit StatsBase Supertech = [± 2; .1; .3; .5]; Slowpoke = [.05; .2; -12; .09]; X = reshape ([Supertech; Slowpoke], 4,2) mlen = size (X) [1] = Mittel mean_and_cov (X) [1] = covtmp Einsen (mlen) Mittel [1] für i = 1: für j = 1 mlen: Rang (X) covtmp [i] = covtmp [i] * (X [i, j] - Mittel [j]); Ende Ende mycov = Summe (covtmp)/mlen; println ("Correct Kovarianz Matrix X =", mycov) println ("Während cov (X) =" cov (X)) ' – bauhaus9