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
Vous devez vous connecter pour publier un commentaire.
Donc c'est la covariance sur
[4, 5, 5, 4, 4, 4]
fois[4, 4, 4, 4, 4, 4]
.L'écart-type de
[4, 4, 4, 4, 4, 4]
est égale à zéro.Donc c'est la covariance sur
[4, 5, 5, 4, 4, 4]
foisDonc c'est la covariance sur
Tout divisé par zéro est
nan
. La valeur de la covariance est hors de propos.L'existence de Pearson r est pas de garantie pour être définis.
Merci. Oui, vous avez raison. Je viens de voir cela. Mais... je ne suis pas heureux. Merci encore les gars.
Si la définition que vous avez posté est juste, si l'écart-type de la variable est égale à zéro, alors le coefficient de corrélation n'est pas défini. (Je ne fait ont un diplôme en Économie, et a pris beaucoup d'Économétrie et de la Statistique. Mais rien de tout ce qui est nécessaire pour comprendre cela, il résulte de la définition de la simple arithmétique, soit lorsque l'écart type est égal à zéro).
La droite. Pas besoin de l'Économie ou de Mathématiques, je pense que pour celui-ci. Je pense que de cette façon. Si il n'y a pas de modèle avec variable aléatoire X (parce que c'est une constante), alors cov(X, ANY_RANDOM_VARIABLE) est égal à zéro. - Je l'interpréter (à tort) qu'il suffit de dire PCC devrait également être de zéro de manière intuitive.
OriginalL'auteur agf