Warum gibt Corrcoef eine Matrix zurück?


81

Es scheint mir seltsam, dass np.corrcoef eine Matrix zurückgibt.

 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns)

[[ 1.         -0.99598935]
 [-0.99598935  1.        ]]

Weiß jemand, warum dies der Fall ist und ob es möglich ist, nur einen Wert im klassischen Sinne zurückzugeben?


28
Kannst du die beste Antwort von unten als Respekt ankreuzen?
— Yank

Antworten:


156

Sie können damit Korrelationskoeffizienten von> 2 Datensätzen berechnen, z

>>> from numpy import *
>>> a = array([1,2,3,4,6,7,8,9])
>>> b = array([2,4,6,8,10,12,13,15])
>>> c = array([-1,-2,-2,-3,-4,-6,-7,-8])
>>> corrcoef([a,b,c])
array([[ 1.        ,  0.99535001, -0.9805214 ],
       [ 0.99535001,  1.        , -0.97172394],
       [-0.9805214 , -0.97172394,  1.        ]])

Hier können wir den Korrelationskoeffizienten von a, b (0,995), a, c (-0,981) und b, c (-0,972) gleichzeitig erhalten. Der Fall mit zwei Datensätzen ist nur ein Sonderfall der Klasse mit N Datensätzen. Und wahrscheinlich ist es besser, den gleichen Rückgabetyp beizubehalten. Da der "eine Wert" einfach mit erhalten werden kann

>>> corrcoef(a,b)[1,0]
0.99535001355530017

Es gibt keinen großen Grund, den Sonderfall zu erstellen.


1
Ausgezeichnetes Beispiel, das die grundlegende Funktionalität von CORRCOEF (über die Beantwortung der ursprünglichen Frage hinaus) deutlich zeigt
— Hiro

Was ist die Formel, wenn ich x UND y übergebe?
— Evgeni Nabokov

53

corrcoef Gibt die normalisierte Kovarianzmatrix zurück.

Die Kovarianzmatrix ist die Matrix

Cov( X, X )    Cov( X, Y )

Cov( Y, X )    Cov( Y, Y )

Normalisiert ergibt dies die Matrix:

Corr( X, X )    Corr( X, Y )

Corr( Y, X )    Corr( Y, Y )

correlation1[0, 0 ]ist die Korrelation zwischen Strategy1Returnsund sich selbst, die 1 sein muss. Sie wollen nur correlation1[ 0, 1 ].


Wie lautet die Formel für Corrcoef (x, y, rowvar = False), wobei x und y die Form haben (150, 4)? Das Ergebnis ist Matrix 8x8 (warum?).
— Evgeni Nabokov

1
@EvgeniNabokov Das Ergebnis für verkettetes x und y, als ob sie in (150, 8) Form gestapelt wären. Dann 1 Corrcoef für jede Kombination. Die Formel ist dieselbe (стандартная).
— Sherdim

6

Die Korrelationsmatrix ist die Standardmethode, um Korrelationen zwischen einer beliebigen endlichen Anzahl von Variablen auszudrücken. Die Korrelationsmatrix von N Datenvektoren ist eine symmetrische N × N- Matrix mit einer Einheitsdiagonale. Nur im Fall N = 2 hat diese Matrix einen freien Parameter.


2

Mit der folgenden Funktion können Sie nur den Korrelationskoeffizienten zurückgeben:

def pearson_r(x, y):
"""Compute Pearson correlation coefficient between two arrays."""

   # Compute correlation matrix
   corr_mat = np.corrcoef(x, y)

   # Return entry [0,1]
   return corr_mat[0,1]

1

Erwägen Sie die Verwendung von matplotlib.cbook-Teilen

zum Beispiel:

import matplotlib.cbook as cbook
segments = cbook.pieces(np.arange(20), 3)
for s in segments:
     print s

Aktualisierung erforderlich, da cbook veraltet ist.
— Van Peer

1

Die Funktion Korrelieren von numpy funktioniert mit 2 1D-Arrays, die Sie korrelieren möchten, und gibt einen Korrelationswert zurück.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.