Numpy - le coefficient de corrélation et liées à des fonctions statistiques ne donnent pas les mêmes résultats
Pour les données X = [0,0,1,1,0]
et Y = [1,1,0,1,1]
>> np.corrcoef(X,Y)
retourne
array([[ 1. , -0.61237244],
[-0.61237244, 1. ]])
Cependant, je ne peux pas reproduire ce résultat à l'aide np.var
et np.cov
compte tenu de l'équation montré dans http://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html:
>> np.cov([0,0,1,1,0],[1,1,0,1,1])/sqrt(np.var([0,0,1,1,0])*np.var([1,1,0,1,1]))
array([[ 1.53093109, -0.76546554],
[-0.76546554, 1.02062073]])
Ce qui se passe ici?
OriginalL'auteur neither-nor | 2014-04-05
Vous devez vous connecter pour publier un commentaire.
C'est parce que,
np.var
par défaut delta degrés de liberté est0
, pas1
.Ou regarde la dans le cas contraire:
Ce qui se passe vraiment,
np.cov(m, y=None, rowvar=1, bias=0, ddof=None)
, quandbias
etddof
les deux ne sont pas fournies, la valeur par défaut de normalisation est parN-1
, N étant le numéro de l'observation. C'est donc l'équivalent d'avoir delta degrés de liberté de1
. Malheureusement, la valeur par défaut pournp.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False)
a le défaut delta degrés de liberté de0
.Chaque fois que le doute, le moyen le plus sûr est de saisir les éléments de la diagonale de la matrice de covariance plutôt que de calculer
var
séparément, afin d'assurer la cohérence du comportement.Si vous venez de
V*V
, il va être un elememnt-sage de l'opération et le résultat n'est pas le 2 par 2 de la matrice que nous voulons. La deuxième question voir msu.edu/user/sw/statrev/strv155.htm (variance de l'échantillon c. s. variance de population). Mais ce n'est pas exactement la question ici, voir modifier.OriginalL'auteur CT Zhu
En fonction de votre lien ( http://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html ), vous devez être conscient des indices...
C'est à droite!
OriginalL'auteur Travis D.