소품집

자기회귀모형 (Autoregressive models : AR) 식별법 본문

Time series

자기회귀모형 (Autoregressive models : AR) 식별법

sodayeong 2020. 6. 12. 11:58

정의

  • AR (Autoregressive model) : 시계열 yt를 종속변수로 그 이전 시점의 시계열 yt-1, … , yt-p 독립변수로 갖는 회귀모형의 형태

  • 𝜀𝑡 normally distributed white noise (평균 = 0, 분산 = 1)으로 가정 즉 N(0,1^2)

  • C는 dritf term(절편)을 의미 (상수항)

  • p차 자기회귀모형이라 하며 AR(p)로 표시

  • 시점 t에 있어서의 변동은 시점 t-1로부터 t-p까지의 영향을 받음

  • 보통 p=1 또는 p=2까지 영향을 미치며 이를 AR(1), AR(2) 모형이라함

  • 상수항이 없는 AR(1)과 AR(2) 모형

 

 

 

AR(p) 모형


 

 

Φ(계수값)에 따른 AR(1) 데이터 시뮬레이션

set.seed(12)
y <- ts(numeric(300))
e <- rnorm(300)

for(t in 2:300) {
  y[t] <- Φ* y[t-1] +e[t] 
}

Φ에 각 계수값을 0.9, 0.6, -0.8, -0.5를 대입하여 AR(1) 시계열을 생성해보자

 

두 가지 확인사항

  • ggtsdisplay(y)
  • Arima(y, order=c(1,0,0)) # 계수(모수) 추정값 확인하기

Φ =0.9 일 때

 

Φ = 0.6 일 때

 

 

Φ = -0.8 일 때

 

Φ = -0.5 일 때

 

 

AR(1) 모형 시뮬레이션 - 상수항이 있는 AR(1) 모형


set.seed(12)
y <- ts(numeric(300))
e <- rnorm(300)

for(t in 2:300) {
  y[t] = -0.8*y[t-1] + e[t] +18
}

ggtsdisplay(y)
Arima(y, order=c(1,0,0))

AR(1) 모델에서 ACF는 지수감소적 형태를 보여주며 PACF는 1차이후 절단되어 모두 0에 가까운 형태를 보여줍니다.

이 모델을 식으로 써본다면 yt= -0.8590yt-1+ εt +9.9559 로 쓸 수 있습니다.

 

 

AR(2) 모형 시뮬레이션


Φ1 = 1.3, Φ2 = -0.7 인 경우

set.seed(123)
y <- ts(numeric(300))
e <- rnorm(300)

for(t in 3:300) {
  y[t] = -1.3*y[t-1] -0.7*y[t-2] +e[t]
}

ggtsdisplay(y)
Arima(y, order=c(1,0,0))

 

AR(2) 모델또한 ACF는 지수감소적 형태를 보여주며 PACF는 2차 이후 절단 되어 모두 0에 가까운 형태를 보여줍니다.

이 모델을 식으로 써본다면 yt= -0.7522yt-1+ εt+ 0.0148 로 쓸 수 있습니다.

 

 

자기회귀모형 (Autoregressive models : AR)


AR(1)과 AR(2) 모형

정상성을 만족하기 위한 제약조건

만일, 조건을 만족하지 않는다면 시뮬레이션을 통해 확인해야합니다.

시뮬레이션을 통해서 확인해 볼까요? ^__^

크게 아래 세 가지 경우로 나누어서 확인해보도록 할게요.

  • Φ1 = 1
  • Φ1 = 1.5
  • Φ1 = -1.5, Φ2 = 0.6
  • Arima()함수 에러 확인

 

가상의 AR(1) 시계열로 분석해보기 (Box-Jenkins 방법론)


Φ1 = 0.9인 AR(1) 시계열 생성

set.seed(12)
y <- ts(numeric(300))
e <- rnorm(300)

for(t in 2:300) {
  y[t] <- 0.9 * y[t-1] +e[t] 
}

# train set과 test set 나누기 
train <- window(y, start=1, end=250)
test <- window(y, start=251, end=300)

모형식별

# ACF와 PACF를 통해 모형 식별 
ggtsdisplay(y) # AR(1)로 파악됨

# 통계검정 활용 (KPSS 검정)
summary(ur.kpss(train)) # 유의수준 0.01에서 귀무가설 채

H0 : 정상시계열이다

H1: 정상시계열이 아니다

유의수준 : 0.01

 

KPSS 검정한 결과값을 확인해보면 검정통계량은 0.183, 유의수준은 0.01에서 임계값 0.739로 귀무가설을 채택하게 됩니다. 그래서 이 모형은 정상시계열로 채택할 수 있게 되는거죠.

 

 

모수추정 (Box-Jenkins 방법론)


Arima() 함수 이용 (log MLE 방법론이 default임!)

 

AR(1) 인 경우 (Φ1 = 0.9)

ar_1 <- Arima(train, order=c(1,0,0))
ar_1_include.mean <- Arima(train, order=c(1,0,0),include.mean=F) # 절편이 없는 경우

# 예측 (Box-Jenkins 방법론)
## forecast 함수 이용하기 
ar_1_F <- forecast(ar_1, h=50) #현재부터 미래 50개의 데이터를 예측

## 예측성과 비교하기 meanf, naive 등의 예측방법과 성과 비교
ar_1_meanf <- meanf(train, h=50)
ar_1_naive <- naive(train, h=50)

accuracy(ar_1_F, test)
accuracy(ar_1_meanf, test)
accuracy(ar_1_naive, test)

 

 

적합성 진단 (Diagnosis) (Box-Jenkins 방법론)


통계 검정을 통해 모형 선정 (잔차의 독립성 확인 및 검정)

checkresiduals(ar_1) 
Box.test(ar_1$residuals, lag=10,type='Ljung-Box') 

H0 : 자기상관성이 없다

H1 : 자기상관성이 있다

유의수준 : 0.05 (95%)

ACF의 분포를 보면 유의수준을 기준 안으로 분포가 되어있는 모습을 볼 수 있습니다.

즉, 자기상관성이 없다는 것을 파악할 수 있음 (자기상관성이 있기 위해선 유의수준을 밖으로 치는 값이 있어야 함)

 

Ljung-Box 검정을 통해 잔차를 확인해봤습니다.

p-value가 0.7955로 유의수준 95%에서 귀무가설을 채택. 즉 자기상관성이 없다는 것을 파악할 수 있습니다.

 

 

예측 (Box-Jenkins 방법론)


## forecast 함수 이용하기 
ar_1_F <- forecast(ar_1, h=50) #현재부터 미래 50개의 데이터를 예측

## 예측성과 비교하기 meanf, naive 등의 예측방법과 성과 비교
ar_1_meanf <- meanf(train, h=50)
ar_1_naive <- naive(train, h=50)

accuracy(ar_1_F, test)
accuracy(ar_1_meanf, test)
accuracy(ar_1_naive, test)

 

예측성과를 알아보기 위해 Accuracy를 구해봤습니다.

RMSE를 기준으로 모델 적합성을 확인해보면, a1_1_F 즉 AR(1) 모형이 가장 잘 적합된 것을 확인할 수 있습니다.

728x90

'Time series' 카테고리의 다른 글

ARMA model  (0) 2020.06.20
이동평균모형 (Moving average models : MA) 식별법  (0) 2020.06.12
KPSS 검정  (0) 2020.06.08
ARIMA model & 정상성 파악  (0) 2020.06.05
시계열의 변동요인과 모형  (0) 2020.04.20
Comments