Me parece extraño que np.corrcoef devuelva una matriz.
correlation1 = corrcoef(Strategy1Returns,Strategy2Returns)
[[ 1. -0.99598935]
[-0.99598935 1. ]]
¿Alguien sabe por qué es así y si es posible devolver un solo valor en el sentido clásico?
Respuestas:
Le permite calcular coeficientes de correlación de> 2 conjuntos de datos, p. Ej.
>>> 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. ]])
Aquí podemos obtener el coeficiente de correlación de a, b (0,995), a, c (-0,981) yb, c (-0,972) a la vez. El caso de dos conjuntos de datos es solo un caso especial de la clase N-conjunto de datos. Y probablemente sea mejor mantener el mismo tipo de devolución. Dado que el "valor único" se puede obtener simplemente con
>>> corrcoef(a,b)[1,0] 0.99535001355530017
no hay una gran razón para crear el caso especial.
fuente
corrcoef
devuelve la matriz de covarianza normalizada.La matriz de covarianza es la matriz
Normalizado, esto producirá la matriz:
correlation1[0, 0 ]
es la correlación entreStrategy1Returns
y él mismo, que debe ser 1. Solo quierescorrelation1[ 0, 1 ]
.fuente
La matriz de correlación es la forma estándar de expresar correlaciones entre un número finito arbitrario de variables. La matriz de correlación de N vectores de datos es una matriz simétrica N × N con diagonal unitaria. Solo en el caso de N = 2, esta matriz tiene un parámetro libre.
fuente
Puede utilizar la siguiente función para devolver solo el coeficiente de correlación:
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]
fuente
Considere usar piezas de matplotlib.cbook
por ejemplo:
import matplotlib.cbook as cbook segments = cbook.pieces(np.arange(20), 3) for s in segments: print s
fuente
La función Correlate of numpy funciona con 2 matrices 1D que desea correlacionar y devuelve un valor de correlación.
fuente