Rencontré valeur non valide lorsque j'utilise pearsonr

Peut-être que j'ai fait une erreur. Si oui, je suis désolé de vous demander cela.

Je veux calculer coefficient de corrélation de Pearson en utilisant scipy est pearsonr fonction.

from scipy.stats.stats import pearsonr

X = [4, 4, 4, 4, 4, 4]
Y = [4, 5, 5, 4, 4, 4]

pearsonr(X, Y)

J'obtiens un message d'erreur ci-dessous

RuntimeWarning: valeur invalide rencontrées dans double_scalars ###

La raison pour laquelle j'obtiens une erreur est E[X] = 4 (à l'Exception de la Valeur de X est 4)

Je regarde le code de pearsonr fonction dans scpy.stats.stats.py. Une partie de la pearsonr fonction est la suivante.

mx = x.mean() # which is 4
my = y.mean() # not necessary
xm, ym = x-mx, y-my # xm = [0 0 0 0 0 0]
r_num = n*(np.add.reduce(xm*ym)) #r_num = 0, because xm*ym 1x6 Zero Vector.
r_den = n*np.sqrt(ss(xm)*ss(ym)) #r_den = 0
r = (r_num / r_den) # Invalid value encountered in double_scalars

À la fin, pearsonr retourne (nan, 1.0)

Devrait pearsonr retour (0, 1.0)?

Je pense que si un vecteur a la même valeur pour chaque ligne/colonne, la covariance doit être égale à zéro. Ainsi, Pearson Correleation Coefficient devrait également être de zéro par la définition du PCC.

Pearson, le coefficient de corrélation entre les deux variables est définie comme la la covariance de deux variables, divisé par le produit de leurs écarts-types.

Est-ce un bug ou où puis-je fais une erreur?

OriginalL'auteur Baskaya | 2011-10-04