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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist also die Kovarianz über
[4, 5, 5, 4, 4, 4]
mal[4, 4, 4, 4, 4, 4]
.Die Standardabweichung der
[4, 4, 4, 4, 4, 4]
null ist.Es ist also die Kovarianz über
[4, 5, 5, 4, 4, 4]
malEs ist also die Kovarianz über
Alles geteilt durch null ist
nan
. Der Wert der Kovarianz ist irrelevant.