Обнаружено недопустимое значение при использовании 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).

Я смотрю код функции 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.

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

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


person Baskaya    schedule 04.10.2011    source источник


Ответы (1)


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

Итак, ковариация закончилась

  • стандартное отклонение [4, 5, 5, 4, 4, 4] раз
  • стандартное отклонение [4, 4, 4, 4, 4, 4].

Стандартное отклонение [4, 4, 4, 4, 4, 4] равно нулю.

Итак, ковариация закончилась

  • стандартное отклонение [4, 5, 5, 4, 4, 4] раз
  • нуль.

Итак, ковариация закончилась

  • нуль.

Все, что делится на ноль, равно nan. Значение ковариации нерелевантно.

person agf    schedule 04.10.2011
comment
Благодарю. Да, 0/0 будет nan, но коэффициент корреляции Пирсона будет от -1 до 1. Предположим, вы даете рекомендацию, и это рейтинги. Я думаю, что pearsonr вернет 0, а не NaN. - person Baskaya; 05.10.2011
comment
@Thorn: существование r Пирсона не гарантируется, чтобы быть определенным. - person unutbu; 05.10.2011
comment
@unutbu Спасибо. Да ты прав. Я только что это видел. Но ... я не в восторге. Еще раз спасибо, ребята. - person Baskaya; 05.10.2011
comment
@Thorn Если определение, которое вы опубликовали, верно, то если стандартное отклонение любой переменной равно нулю, то коэффициент корреляции не определен. (На самом деле у меня есть степень по экономике, и я изучил много эконометрики и статистики. Но для понимания этого не требуется ничего - это следует из определения с простой арифметикой, когда любое стандартное отклонение равно нулю). - person agf; 05.10.2011
comment
@agf Верно. Думаю, для этого не нужны ни экономика, ни математика. Я так думаю. Если нет шаблона со случайной величиной X (потому что она постоянная), то cov (X, ANY_RANDOM_VARIABLE) равно нулю. Я интерпретирую (ошибочно), что достаточно интуитивно сказать, что PCC также должен быть равен нулю. - person Baskaya; 05.10.2011