Обнаружено недопустимое значение при использовании pearsonr

Возможно, я ошибся. Если так, мне жаль спрашивать об этом.

Я хочу вычислить коэффициент корреляции Пирсона , используя функцию Scipy pearsonr .

from scipy.stats.stats import pearsonr

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

pearsonr(X, Y)

Я получаю сообщение об ошибке ниже

RuntimeWarning: недопустимое значение в double_scalars ###

Я получаю сообщение об ошибке E [X] = 4 (исключенное значение X равно 4)

I посмотрите код функции pearsonr в scpy.stats.stats.py. Некоторая часть функции pearsonr выглядит следующим образом.

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

В конце pearsonr возвращает (nan, 1.0)

Должен ли pearsonr возвращать (0, 1.0) ?

Я думаю, что если вектор имеет одинаковое значение для каждой строки / столбца, ковариация должна быть равна нулю. Таким образом, коэффициент корреляции Пирсона также должен быть равен нулю по определению PCC.

Коэффициент корреляции Пирсона между двумя переменными определяется как ковариация двух переменных, деленная на произведение их стандартных отклонений .

Это ошибка или где я ошибаюсь?

11
задан nbro 15 December 2018 в 22:44
поделиться