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?
Antworten:
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.
quelle
corrcoef
Gibt die normalisierte Kovarianzmatrix zurück.Die Kovarianzmatrix ist die Matrix
Normalisiert ergibt dies die Matrix:
correlation1[0, 0 ]
ist die Korrelation zwischenStrategy1Returns
und sich selbst, die 1 sein muss. Sie wollen nurcorrelation1[ 0, 1 ]
.quelle
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.
quelle
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]
quelle
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
quelle
Die Funktion Korrelieren von numpy funktioniert mit 2 1D-Arrays, die Sie korrelieren möchten, und gibt einen Korrelationswert zurück.
quelle