динамическая корреляция между векторами (с выборкой) - PullRequest
0 голосов
/ 21 февраля 2019

Скажем, у меня есть два вектора одинаковой длины

A = mtcars$mpg
B = mtcars$cyl

Я могу рассчитать корреляцию между целыми векторами

cor (A, B)

и получить одно значение (-0.852162).

Мне нужно рассчитать корреляцию между двумя векторами с частотой дискретизации 10, что означает, что я начинаю с первого пункта данных в A и B, возьму 5 значений справа от него (нет значений наслева), вычислите коэффициент корреляции и запишите его в векторе C. Затем я беру следующее значение в A & B, беру 5 значений справа и 1 слева, записываю его в вектор;затем снова перейдите к следующему значению и так далее.Результирующий вектор C должен содержать то же количество значений, что и A или B (N = 32), и каждое значение в C представляет корреляцию b / w A и B с частотой дискретизации 10 (5 значений слева и 5 напрямо с этой даты, если это возможно).Есть ли какой-нибудь элегантный и простой способ сделать это в R?

PS: Простота кодирования важнее, чем время, необходимое для вычислений.

1 Ответ

0 голосов
/ 21 февраля 2019

Пакет TTR может предоставить то, что вы ищете.

Это должно быть просто:

TTR::runCor(A, B)

В блоге есть целая запись о скользящей корреляции здесь .

...