Як розрахувати ковзну кореляцію в r


Кореляційні кореляції — це кореляції між двома часовими рядами в ковзному вікні. Одна з переваг цього типу кореляції полягає в тому, що ви можете візуалізувати кореляцію між двома часовими рядами з часом.

У цьому підручнику пояснюється, як обчислити ковзаючі кореляції в R.

Як обчислити ковзаючі кореляції в R

Припустімо, що ми маємо наступний кадр даних, який відображає загальну кількість проданих продуктів для двох різних продуктів ( x і y ) за 15-місячний період:

 #create data
data <- data.frame(month=1:15,
                   x=c(13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20),
                   y=c(22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28))

#view first six rows
head(data)

  month xy
1 1 13 22
2 2 15 24
3 3 16 23
4 4 15 27
5 5 17 26
6 6 20 26

Щоб обчислити змінну кореляцію в R, ми можемо використати функцію rollapply() із пакета zoo .

Ця функція використовує такий синтаксис:

rollapply(дані, ширина, FUN, by.column=TRUE)

золото:

  • дані: ім’я кадру даних
  • ширина: ціле число, що визначає ширину вікна для ковзної кореляції
  • FUN: функція для застосування.
  • by.column: вказує, чи застосовувати функцію до кожного стовпця окремо. За замовчуванням це TRUE, але для обчислення ковзної кореляції нам потрібно вказати, що це FALSE.

Ось як використовувати цю функцію для обчислення 3-місячної ковзної кореляції продажів між продуктом x і продуктом y :

 #calculate 3-month rolling correlation between sales for x and y
rollapply(data, width=3, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.6546537 -0.6933752 -0.2401922 -0.8029551 0.8029551 0.9607689
 [7] 0.9819805 0.6546537 0.8824975 0.8170572 -0.9449112 -0.3273268
[13] -0.1889822

Ця функція повертає кореляцію між продажами двох продуктів за попередні 3 місяці. Наприклад:

  • Кореляція продажів у 1-3 місяці становила 0,6546537 .
  • Кореляція продажів у місяці 2-4 становила -0,6933752.
  • Кореляція продажів у місяці 3-5 становила -0,2401922.

І так далі.

Ми можемо легко налаштувати цю формулу, щоб обчислити змінну кореляцію для іншого періоду часу. Наприклад, у наведеному нижче коді показано, як обчислити 6-місячну змінну кореляцію продажів між двома продуктами:

 #calculate 6-month rolling correlation between sales for x and y
rollapply(data, width=6, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.5587415 0.4858553 0.6931033 0.7564756 0.8959291 0.9067715 0.7155418
 [8] 0.7173740 0.7684468 0.4541476

Ця функція повертає кореляцію між двома продажами продукту за попередні 6 місяців. Наприклад:

  • Кореляція продажів у місяцях 1-6 склала 0,5587415 .
  • Кореляція продажів у місяці 2-7 становила 0,4858553.
  • Кореляція продажів у місяці 3-8 становила 0,6931033.

І так далі.

Коментарі

Під час використання функції rollapply() пам’ятайте про наступне:

  • Ширина (тобто спадне вікно) має дорівнювати або перевищувати 3, щоб обчислити кореляції.
  • У наведених вище формулах ми використовували cor(x[,2],x[3]), оскільки два стовпці, між якими ми хотіли обчислити кореляцію, були в позиціях 2 і 3 . Відкоригуйте ці числа, якщо стовпці, які вас цікавлять, розташовані в різних позиціях.

Пов’язане: Як обчислити змінну кореляцію в Excel

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *