Aufgetreten Ungültiger Wert wenn ich pearsonr

Vielleicht habe ich einen Fehler gemacht. Wenn ja, tut mir Leid das zu Fragen.

Möchte ich berechnen Pearson correlation coefficent durch die Verwendung von scipy ist pearsonr Funktion.

from scipy.stats.stats import pearsonr

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

pearsonr(X, Y)

Bekomme ich eine Fehlermeldung unten

RuntimeWarning: invalid value encountered in double_scalars ###

Der Grund, warum ich eine Fehlermeldung erhalten, ist E[X] = 4 (Ausgenommen Wert von X ist 4)

Schaue ich mir den code der Funktion in pearsonr scpy.stats.stats.py. Ein Teil der pearsonr Funktion ist wie folgt.

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

Am Ende pearsonr zurück (nan, 1.0)

Sollte pearsonr zurück (0, 1.0)?

Ich denke, wenn ein Vektor hat den gleichen Wert für jede Zeile/Spalte, Kovarianz null sein muß. Damit Pearson Correleation Koeffizient sollte auch null sein, die von der definition des PCC.

Pearson-Korrelationskoeffizienten zwischen zwei Variablen ist definiert als die Kovarianz der beiden Variablen geteilt durch das Produkt aus deren Standardabweichungen.

Ist es bug oder wo mache ich einen Fehler?

InformationsquelleAutor Baskaya | 2011-10-04
Schreibe einen Kommentar