R에서 슬라이딩 상관관계를 계산하는 방법


롤링 상관관계는 슬라이딩 윈도우에 대한 두 시계열 간의 상관관계입니다. 이러한 유형의 상관 관계의 이점 중 하나는 시간 경과에 따른 두 시계열 간의 상관 관계를 시각화할 수 있다는 것입니다.

이 튜토리얼에서는 R에서 롤링 상관 관계를 계산하는 방법을 설명합니다.

R에서 롤링 상관 관계를 계산하는 방법

15개월 동안 두 가지 제품( xy )에 대해 판매된 총 제품 수를 표시하는 다음 데이터 프레임이 있다고 가정합니다.

 #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에서 롤링 상관관계를 계산하려면 Zoo 패키지의 Rollapply() 함수를 사용할 수 있습니다.

이 함수는 다음 구문을 사용합니다.

Rollapply(데이터, 너비, FUN, by.column=TRUE)

금:

  • data: 데이터 프레임의 이름
  • width: 슬라이딩 상관 관계에 대한 창 너비를 지정하는 정수
  • FUN : 적용할 기능입니다.
  • by.column: 각 컬럼에 별도로 함수를 적용할지 여부를 지정합니다. 기본적으로 TRUE이지만 롤링 상관 관계를 계산하려면 FALSE로 지정해야 합니다.

다음은 이 함수를 사용하여 제품 x 와 제품 y 간 매출의 3개월 이동 상관 관계를 계산하는 방법입니다.

 #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보다 크거나 같아야 합니다.
  • 위 수식에서는 상관 관계를 계산하려는 두 열이 위치 23 에 있었기 때문에 cor(x[,2],x[3]) 을 사용했습니다. 관심 있는 열이 다른 위치에 있는 경우 이 숫자를 조정하십시오.

관련 항목: Excel에서 롤링 상관관계를 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다