Нулевое заполнение, взаимная корреляция и коэффициент Пирсона в Python

У меня есть несколько вопросов о том, что я делаю неправильно в кросс-корреляционном анализе, который я делаю.

Для первого вопроса у меня есть два набора данных: x и y, два из которых -мерные массивы каждый; первый столбец — это дата измерения данных (в цифрах), а второй — измеренные данные. Однако y смещен на несколько месяцев по сравнению с x (сначала измерялось x, а затем y), и x имеет больше точек данных, чем y, но они имеют одинаковое временное разрешение, т. е. каждый день. Я выполнил взаимную корреляцию между двумя наборами данных,

xcorr = np.correlate(x[:, 1], y[:, 1], mode = 'full')

а затем я оценил отставание между двумя наборами данных,

lag = np.arange(-(len(xcorr) + 1)/2 + 1, (len(xcorr) + 1)/2)

Я обнаружил, что задержка в этом случае составила около 12 дней. Тем не менее, я попытался добавить нули к x и y, чтобы заполнить дни, когда x или y отсутствуют, а затем повторно выполнил взаимную корреляцию. Однако в этом случае отставание увеличилось до 60 дней, что не совпадает с начальной оценкой, но имеет ту же корреляцию, что и данные без дополнений. Что могло быть причиной этого или какой метод является правильным при выполнении кросс-корреляции?

По второму вопросу, я так понимаю взаимная корреляция, она должна быть равна корреляции Пирсона при нулевом лаге. Я попытался сдвинуть данные на количество дней, предоставленных обоими методами (с заполнением нулями и без него), следующим образом:

shift_y = y[:, 0] + int(lag[np.argmax(xcorr)])

inf_date = max(x[0, 0], shift_y[0])
sup_date = min(x[-1, 0], shift_y[-1])

shift_y = y + [lag[np.argmax(xcorr)], 0]
shift_y = shift_y[(shift_y[:, 0] >= inf_date)]
shift_y = shift_y[(shift_y[:, 0] <= sup_date)]
shift_x = x
shift_x = shift_x[shift_x[:, 0] >= inf_date]
shift_x = shift_x[shift_x[:, 0] <= sup_date]

и я попытался оценить коэффициент Пирсона для обоих смещенных данных, но результат корреляции Пирсона не совпадает с результатом взаимной корреляции. В чем может быть проблема в этом случае?

Я видел этот сообщение, которое, кажется, решает проблему заполнения нулями. , но я думаю, что это подходит только для наборов данных, которые намного больше нуля (я все равно пытался это сделать, но коэффициент Пирсона все еще не совпадает с коэффициентом взаимной корреляции).


person magus_e    schedule 10.08.2020    source источник