Может быть, я ошибся. Если так, прошу прощения за это.
Я хочу вычислить коэффициент корреляции Пирсона с помощью функции 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)
Я смотрю код функции Pearsonr в scpy.stats.stats.py. Некоторая часть функции Пирсонра выглядит следующим образом.
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.
Коэффициент корреляции Пирсона между двумя переменными определяется как ковариация двух переменных, деленная на произведение их стандартных отклонений .
Это ошибка или где я могу ошибиться?