Jak obliczyć korelację przesuwną w r


Korelacje kroczące to korelacje pomiędzy dwoma szeregami czasowymi w przesuwającym się oknie. Jedną z zalet tego typu korelacji jest możliwość wizualizacji korelacji między dwoma szeregami czasowymi w czasie.

W tym samouczku wyjaśniono, jak obliczyć kroczące korelacje w języku R.

Jak obliczyć kroczące korelacje w R

Załóżmy, że mamy następującą ramkę danych, która wyświetla całkowitą liczbę produktów sprzedanych dla dwóch różnych produktów ( x i y ) w okresie 15 miesięcy:

 #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

Aby obliczyć korelację kroczącą w R, możemy użyć funkcji rollapply() z pakietu zoo .

Ta funkcja używa następującej składni:

rollapply(dane, szerokość, ZABAWA, by.column=TRUE)

Złoto:

  • dane: Nazwa ramki danych
  • szerokość: Liczba całkowita określająca szerokość okna dla korelacji przesuwnej
  • ZABAWA: Funkcja do zastosowania.
  • by.column: Określa, czy zastosować funkcję do każdej kolumny osobno. Domyślnie jest to PRAWDA, ale aby obliczyć korelację kroczącą, musimy określić, że jest to FAŁSZ.

Oto jak użyć tej funkcji do obliczenia 3-miesięcznej kroczącej korelacji sprzedaży pomiędzy produktem x i produktem 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

Funkcja ta zwraca korelację pomiędzy sprzedażą dwóch produktów w ciągu ostatnich 3 miesięcy. Na przykład:

  • Korelacja sprzedaży w miesiącach 1-3 wyniosła 0,6546537 .
  • Korelacja sprzedaży w miesiącach 2-4 wyniosła -0,6933752.
  • Korelacja sprzedaży w miesiącach 3-5 wyniosła -0,2401922.

I tak dalej.

Możemy łatwo dostosować tę formułę, aby obliczyć korelację kroczącą dla innego okresu. Na przykład poniższy kod pokazuje, jak obliczyć sześciomiesięczną kroczącą korelację sprzedaży między dwoma produktami:

 #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

Funkcja ta zwraca korelację pomiędzy sprzedażą dwóch produktów w ciągu ostatnich 6 miesięcy. Na przykład:

  • Korelacja sprzedaży w miesiącach 1-6 wyniosła 0,5587415 .
  • Korelacja sprzedaży w miesiącach 2-7 wyniosła 0,4858553.
  • Korelacja sprzedaży w miesiącach 3-8 wyniosła 0,6931033.

I tak dalej.

Uwagi

Używając funkcji rollapply() należy pamiętać o następujących kwestiach:

  • Aby można było obliczyć korelacje, szerokość (tj. rozwijanego okna) musi być równa lub większa niż 3.
  • W powyższych wzorach użyliśmy cor(x[,2],x[3]), ponieważ dwie kolumny, między którymi chcieliśmy obliczyć korelacje, znajdowały się na pozycjach 2 i 3 . Dostosuj te liczby, jeśli interesujące Cię kolumny znajdują się w różnych pozycjach.

Powiązane: Jak obliczyć korelację kroczącą w programie Excel

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *