본문 바로가기

[R] Auto Correlation 데이터 생성과 Durbin-Watson 검정

R Programming/Analysis by Mandarim_ 2023. 12. 28.

본 게시글은 R에서 Auto Correlation (혹은 자기상관성; Serial Correlation, 대체로 시계열 데이터에서 나타나는 특성임)이 존재하는 데이터를 생성하는 방법에 대해 소개한다.


Auto Correlation (자기상관성)

 

Auto Correlation은 이 전 시점의 결과 $y_{t-1}$가 현재 시점의 $y_{t}$에 영향을 주는 관계를 의미한다.

보통 시계열 데이터와 같이, 시간의 순서에 따라 결과 변수들이 관찰되었을 때, Auto Correlation이 존재할 가능성이 크다.

 

결과 사이의 자기상관성이 존재한다는 것은 다른 말로 잔차 $\epsilon_{t}$가 이 전 시점의 잔차 $\epsilon_{t-1}$에 영향을 받는다고도 표현할 수 있다.

 

일반적으로 선형 회귀분석 시, 아래와 같이, 잔차 $\epsilon_{t}, t=1,..., T$가 독립적으로 정규분포를 따른다고 한다고 가정한다. 그렇기 때문에 회귀분석할 땐 잔차 간의 Auto Correlation이 존재하는지 확인해야 한다.

 

$$ y_{t} = \beta X_{t} + \epsilon_{t} \\ \epsilon_{t} \sim N(0, \sigma^2) $$

 

잔차 간의 Auto Correlation의 존재할 땐, 수식으로 다음과 같이 표현할 수 있다.

$$ y_{t} = \beta X_{t} + \epsilon_{t} \\ \epsilon_{t} = \rho \epsilon_{t-1} + \nu_{t} $$

$$ \nu_{t} \sim N(0, \sigma^2) $$

 

이때, $|\rho| < 1$는 $\epsilon_{t}$와 $\epsilon_{t-1}$의 상관계수를 의미하며, 


코드 1. arima.sim()을 통한 데이터 생성

  • model = list(order=c(p, d, q), ar=rho);
    • 차례대로 생성하고자 하는 ARIMA(p, d, q) 모형의 계수들을 의미한다. 차례대로 AR(p), d차 차분, MA(q)에 Auto correlation계수 rho를 갖는 ARIMA 모형을 의미한다.
    • 해당함수를 통해, ar(1); auto-correlated 자료를 생성한다. --> ARIMA(1, 0, 0) with rho.
n <- 500
rho <- 0.3

X <- rnorm(n)
beta <- c(1, 2)

e_t <- arima.sim(list(order = c(1,0,0), ar = rho), n=n)
mu <- cbind(1, X) %*% beta

y <- mu + e_t

 


코드 2. 자기상관성 검정

생성한 데이터를 기반으로, Durbin-Watson 검정을 실시하였다. 사용한 함수는 car 패키지의 durbinWatsonTest()이다.

사전에 적합한 Linear Model (테스트하고자 하는)을 Input으로 사용한다.

lmtest 패키지의 dwtest() 또한, 같은 구조로 사용 가능하나, 결과에서 rho 값을 알려주지 않고 dw 통계량만 알려준다.

library(car)

linear_mod <- lm(y ~ X)
durbinWatsonTest(linear_mod)

 

결과 해석

dw 검정 결과
DW 검정 결과

 

 

이때, 귀무가설(H0)은 자기상관성이 존재하지 않는다, 즉 $\rho=0$을 의미한다.

귀무가설을 p-value < 0.05에서 기각하면, 유의 수준 0.05에서 $\rho \ne 0$이라고 말할 수 있다.


참고:

반응형