Description for Autoregressive Moving Average Process
함수 | 설명 |
---|---|
arima() |
ARMA모형의 차수 \(p\)와 \(q\)를 지정하여 모형 구축 |
auto.arima() |
모형의 차수 지정없이 자동적으로 최적화된 모형 구축 |
acf() |
상관도표그림 |
pacf() |
부분상관도표그림 |
Box.test() |
Ljung-Box Test |
checkresiduals() |
잔차가 백색잡음과정의 가정을 만족하는지 확인할 때 사용 |
forecast() |
예측 |
"evir"
에서 제공하는 BMW 데이터셋은 1973년 1월부터 1996년 7월 사이에 BMW 주식의 일별 로그 수익률에 대한 시계열 데이터셋이다.# 패키지 설치
pacman::p_load("evir")
# 데이터 불러오기
data(bmw, package = "evir")
# 시계열 그림
plot(bmw, type = "l")
Result!
증가하거나 감소하는 추세가 없어서 시간의 흐름에 따라 평균이 일정하다.
# 상관도표그림
acf(bmw)
Result!
시차 1에서 막대의 끝이 파란색 선을 넘어가므로 시차 1에 대해 유의한 자기상관관계가 존재한다.
# 부분상관도표그림
pacf(bmw)
Result!
시차 1에서 막대의 끝이 파란색 선을 넘어가므로 시차 1에 대해 유의한 부분자기상관관계가 존재한다.
Caution!
큰 시차에서의 막대 끝이 파란색 선을 넘어가는 것은 우연 변동에 의한 가능성이 높다.
# Ljung-Box Test
Box.test(bmw, lag = 5,
type = "Ljung-Box")
Box-Ljung test
data: bmw
X-squared = 44.987, df = 5, p-value = 1.46e-08
Result!
귀무가설 \(H_0 : \rho(1)=\rho(2)=\cdots=\rho(5)=0\)에 대한 검정 결과에 따르면, \(p\)값이 0에 가까우므로 유의수준 0.05에서 귀무가설을 기각한다. 즉, 관측된 시계열에 대해 \(\rho(1), \rho(2),\cdots,\rho(5)\) 중 유의한 자기상관관계가 적어도 1개 존재한다.
Caution!
함수 arima()
를 이용하여 ARMA(1,1) 모형을 구축하려면 옵션 order = c(1, 0, 1)
을 입력한다. 만약, ARMA(\(p,q\)) 모형을 구축하려면 옵션 order = c(p, 0, q)
을 입력하면 된다.
# 모형 추정 결과
print(ARMA.bmw)
Call:
arima(x = bmw, order = c(1, 0, 1))
Coefficients:
ar1 ma1 intercept
-0.2278 0.3122 4e-04
s.e. 0.1380 0.1349 2e-04
sigma^2 estimated as 0.0002161: log likelihood = 17214.87, aic = -34421.74
Result!
출력 결과를 요약하면 다음과 같다.
1. 모수의 추정치는 \(\hat{\mu}=0.0004\), \(\hat{\phi}=-0.2278\), \(\hat{\theta}=0.3122\), \(\hat{\sigma}^2_\epsilon = 0.0002161\)이다. 이를 이용하면 관측된 시계열에 대해 구축된 ARMA(1,1) 모형은 \(Y_t-0.0004 = -0.2278(Y_{t-1}-0.0004)+ \epsilon_t + 0.3122\epsilon_{t-1}\)이다.
# 잔차를 이용한 백색잡음과정 체크
pacman::p_load("forecast")
checkresiduals(ARMA.bmw)
Ljung-Box test
data: Residuals from ARIMA(1,0,1) with non-zero mean
Q* = 12.394, df = 8, p-value = 0.1345
Model df: 2. Total lags used: 10
Caution!
Package "forecast"
의 함수 checkresiduals()
를 이용하여 잔차에 대한 모형 진단을 수행할 수 있다.
Result!
출력 그래프를 보면, 첫 번째 그래프는 잔차가 추세를 가지는지, 등분산성을 만족하는지 알 수 있다. ACF 그래프를 통해서는 잔차가 자기상관관계를 가지는지 알 수 있으며, 히스토그램을 통해 잔차가 좌우대칭 종 모양의 정규분포를 따르는지 알 수 있다.
“Ljung-Box” 검정 결과에 따르면, 귀무가설 \(H_0 : \rho(1)=\rho(2)=\cdots=\rho(10)=0\)에 대해 \(p\)값이 0.1345이므로 유의수준 0.05에서 \(p\)값이 0.05보다 크기 때문에 귀무가설을 기각하지 못한다. 즉, 잔차에 대해 시차 10까지의 자기상관계수 \(\rho(1), \rho(2), \cdots, \rho(10)\) 중 유의한 자기상관계수가 적어도 1개 존재한다는 증거가 부족하며, 해당 시계열에 대해 ARMA(1,1) 모형을 가정하는 것이 적절하다.
"Ecdat"
에서 제공하는 Mishkin 데이터셋은 1950년 2월부터 1990년 12월 사이에 인플레이션율에 대한 시계열 데이터셋이다.# 패키지 설치
pacman::p_load("Ecdat")
# 데이터 불러오기
data(Mishkin, package = "Ecdat")
y = as.vector(Mishkin[,1]) # 월별 인플레이션율 추출
y
[1] -3.552289 5.247540 1.692860 5.064298 6.719322 11.668920
[7] 9.912501 8.346786 6.517766 4.865085 16.076321 19.154240
[13] 14.061910 4.650814 1.546310 4.627010 -1.540355 1.540355
[19] 0.000000 7.672257 6.102576 6.209472 4.533152 0.000000
[25] -7.564866 0.000000 19.570490 -1.494151 1.494151 0.000000
[31] -1.494151 0.000000 1.494151 0.000000 -1.494151 -2.993894
[37] -6.010291 3.008908 1.501630 2.997634 4.482457 2.979029
[43] 2.971549 1.483071 2.960655 -4.443726 -1.484906 2.967978
[49] -1.483071 -1.484906 -2.839906 2.839906 1.484906 0.000000
[55] -1.484906 -2.839906 -2.982291 2.982291 -2.982291 0.000000
[61] 0.000000 1.492020 0.000000 0.000000 0.000000 2.978693
[67] -2.978693 4.330177 0.000000 1.484906 -2.836390 0.000000
[73] 0.000000 2.836390 1.483071 5.914023 5.751562 8.774637
[79] -1.457907 1.457907 5.682521 1.449363 2.893485 0.000000
[85] 2.886525 2.748830 2.873018 2.866156 7.006195 5.678584
[91] 1.415482 1.413814 0.000000 4.103441 0.000000 7.020216
[97] 1.399128 6.844860 2.777502 0.000000 1.386248 1.384744
[103] 0.000000 0.000000 1.383148 1.381556 -1.381556 1.381556
[109] -1.381556 0.000000 1.381556 1.254555 5.504627 2.742874
[115] -1.370653 2.739743 3.973921 1.363010 -2.727571 1.364560
[121] 0.000000 6.799529 0.000000 2.586158 0.000000 0.000000
[127] 1.352397 5.394306 1.344819 0.000000 0.000000 1.343314
[133] -1.343314 1.343314 0.000000 1.341812 5.230890 -1.335972
[139] 2.670459 0.000000 0.000000 0.000000 0.000000 2.664529
[145] 2.658626 2.532271 0.000000 0.000000 2.647071 0.000000
[151] 6.592472 -1.315600 0.000000 -1.317044 1.317044 1.315600
[157] 1.194725 0.000000 0.000000 5.242814 3.917133 0.000000
[163] 1.302875 1.183181 0.000000 2.598952 0.000000 0.000000
[169] -1.298772 1.298772 2.593336 0.000000 2.587653 1.291782
[175] -1.291782 2.582175 1.171857 2.574118 1.284992 -1.284992
[181] 0.000000 1.284992 3.846739 2.557659 6.254851 1.270154
[187] -2.541654 2.541654 0.000000 2.536194 3.679570 0.000000
[193] 7.553715 2.393494 4.999561 0.000000 2.491991 2.486741
[199] 7.317456 1.233940 4.811423 0.000000 0.000000 0.000000
[205] 1.227743 2.451723 2.446724 3.549967 3.649961 4.849325
[211] 2.307577 3.617287 3.606416 2.289339 3.588767 4.768305
[217] 3.456034 4.735883 3.539687 4.596686 3.515803 3.399432
[223] 3.495549 3.485477 5.681739 3.458990 2.300467 3.338259
[229] 4.574945 6.726781 5.662605 3.282331 7.861482 3.252032
[235] 4.457231 4.339972 4.424734 5.408054 7.570396 2.182552
[241] 5.439077 3.153226 7.553640 4.197689 3.211568 5.236804
[247] 2.126986 4.242622 6.240278 4.110415 5.237093 2.088382
[253] 5.110830 5.183215 6.096802 5.041712 6.133401 2.962434
[259] 1.016681 1.015820 2.029064 1.013247 3.952596 1.009064
[265] 5.945445 3.007194 2.999539 2.901685 2.984980 2.977574
[271] 2.880218 4.934430 2.950948 3.834231 2.934329 5.758887
[277] 8.630559 11.440700 9.436906 6.536329 7.438794 3.659775
[283] 19.304211 1.838323 7.242186 8.105994 8.051480 9.785962
[289] 15.814170 12.122030 6.883693 12.010690 10.111450 7.566704
[295] 13.394280 12.342670 9.006326 9.680984 7.246837 4.855838
[301] 6.371189 4.738003 4.719480 5.566699 9.340268 12.388900
[307] 4.665991 5.350513 6.864336 6.061113 5.269925 3.040442
[313] 3.720887 3.778037 5.200997 6.673568 7.379198 5.857414
[319] 5.093520 5.072093 5.117023 3.575525 5.014266 6.435108
[325] 12.054450 6.336976 9.123064 6.255971 7.616233 4.105433
[331] 4.782352 2.760079 4.065748 5.420399 4.033883 6.056223
[337] 7.374409 8.668254 9.873637 10.451070 11.012750 5.793180
[343] 5.119508 7.025764 7.623123 6.306279 6.273224 9.946648
[349] 11.106510 10.389710 11.519510 13.766670 11.877010 9.987637
[355] 9.318593 10.410780 9.167216 6.281625 9.620259 14.005740
[361] 14.956960 14.772750 8.707769 10.170030 8.572340 7.396264
[367] 9.999892 11.967070 7.265405 7.174647 7.693233 10.614180
[373] 15.060890 9.936591 6.880011 7.334265 6.843737 9.197388
[379] 8.644333 9.498251 5.220479 4.722268 4.229963 6.531282
[385] 3.765132 1.835451 1.875277 8.318006 11.909480 8.179443
[391] 2.243804 5.880264 5.358331 1.808168 0.903063 2.664138
[397] 0.409372 0.818200 8.558391 6.479959 4.032262 4.820824
[403] 4.002672 5.979086 3.176779 1.981179 1.582568 6.702875
[409] 5.491976 2.736532 5.843219 3.492417 3.868475 3.856044
[415] 4.994358 5.737063 3.048542 0.000000 0.760985 2.279948
[421] 4.924980 5.281344 4.883469 4.490115 3.729027 1.860177
[427] 2.599458 3.703707 3.692311 4.048485 2.935736 3.659655
[433] -3.293165 -5.508809 -2.579503 3.683244 5.869799 0.365932
[439] 2.193139 5.828813 1.089709 1.088720 1.087844 7.226761
[445] 4.308729 5.364409 6.405601 4.251591 4.236581 3.167622
[451] 6.310269 6.277260 3.126359 1.040348 0.000000 3.115431
[457] 3.107574 5.161263 6.164397 4.092111 5.095515 5.073969
[463] 5.052708 8.040197 3.999936 0.998057 1.993322 5.960278
[469] 4.944349 6.888122 7.823956 6.804426 2.904398 2.897386
[475] 1.927679 3.846190 5.746220 2.862824 1.904730 12.307830
[481] 5.638225 6.544558 1.863323 2.789618 6.484031 4.610040
[487] 10.992540 9.988676 7.212614 2.693695 0.000000
# 시계열 그림
plot(y, type = "l")
# 상관도표그림
acf(y)
Result!
대부분의 시차에서 막대의 끝이 파란색 선을 넘어가므로 시차 25까지 유의한 자기상관관계가 존재한다.
# 부분상관도표그림
pacf(y)
Result!
시차 7까지 막대의 끝이 파란색 선을 넘어가므로 시차 7까지 유의한 부분자기상관관계가 존재한다.
# Ljung-Box Test
Box.test(y, lag = 7,
type = "Ljung-Box")
Box-Ljung test
data: y
X-squared = 774.34, df = 7, p-value < 2.2e-16
Result!
귀무가설 \(H_0 : \rho(1)=\rho(2)=\cdots=\rho(7)=0\)에 대한 검정 결과에 따르면, \(p\)값이 0에 가까우므로 유의수준 0.05에서 귀무가설을 기각한다. 즉, 관측된 시계열에 대해 \(\rho(1), \rho(2),\cdots,\rho(7)\) 중 유의한 자기상관관계가 적어도 1개 존재한다.
Ljung-Box test
data: Residuals from ARIMA(1,0,1) with non-zero mean
Q* = 23.724, df = 8, p-value = 0.002549
Model df: 2. Total lags used: 10
Result!
ACF 그래프를 보면 시차 2에서 막대의 끝이 파란색 선을 넘어가므로 자기상관계수가 통계적으로 유의하다. 즉, 시차 2의 잔차들은 유의한 자기상관계수를 가지므로 백색잡음과정의 독립성 가정을 만족하지 않는다.
게다가, “Ljung-Box” 검정 결과에 따르면, 귀무가설 \(H_0 : \rho(1)=\rho(2)=\cdots=\rho(10)=0\)에 대해 \(p\)값이 0.002549이므로 유의수준 0.05에서 \(p\)값이 0.05보다 작아 귀무가설을 기각한다. 즉, 잔차에 대해 시차 10까지의 자기상관계수 \(\rho(1), \rho(2), \cdots, \rho(10)\) 중 유의한 자기상관계수가 적어도 1개 존재한다는 것을 의미하며, 해당 시계열에 대해 ARMA(1,1) 모형을 가정하는 것은 적절하지 않다.
Caution!
Package "forecast"
에서 제공하는 함수 auto.arima()
에 옵션 max.p = 20, max.q = 20, d = 0
을 입력하여 최적의 ARMA(\(p,q\)) 모형을 찾을 수 있다.
pacman::p_load("forecast")
auto.y2 <- auto.arima(y, max.p = 20,
max.q = 20, d = 0,
ic = "aic") # AIC 기준으로 AIC가 가장 작은 모형을 최적 모형으로 선택
print(auto.y2)
Series: y
ARIMA(2,0,1) with non-zero mean
Coefficients:
ar1 ar2 ma1 mean
1.2074 -0.2237 -0.8573 4.1068
s.e. 0.0587 0.0551 0.0337 1.0692
sigma^2 = 8.533: log likelihood = -1221.52
AIC=2453.03 AICc=2453.16 BIC=2474.02
Result!
관측된 시계열에 대해 AIC를 기준으로 최적의 모형은 ARMA(2,1) 모형이다. 모수 추정 결과에 따르면, \(\hat{\mu} = 4.1068\), \(\hat{\phi}_1=1.2074\), \(\hat{\phi}_2=-0.2237\), \(\hat{\theta}=-0.8573\), \(\hat{\sigma}^2_\epsilon = 8.533\)이다. 이를 이용하면 관측된 시계열에 대해 구축된 ARMA(2,1) 모형은 \(Y_t-4.1068 = 1.2074(Y_{t-1}-4.1068)-0.2237(Y_{t-2}-4.1068)+\epsilon_t -0.8573\epsilon_{t-1}\)이다.
# 잔차를 이용한 백색잡음과정 체크
checkresiduals(auto.y2)
Ljung-Box test
data: Residuals from ARIMA(2,0,1) with non-zero mean
Q* = 6.9828, df = 7, p-value = 0.4307
Model df: 3. Total lags used: 10
Result!
히스토그램을 살펴보면, 왼쪽으로 치우친 그래프 모양임을 알 수 있다.
게다가, “Ljung-Box” 검정 결과에 따르면, 귀무가설 \(H_0 : \rho(1)=\rho(2)=\cdots=\rho(10)=0\)에 대해 \(p\)값이 0.4307이므로 유의수준 0.05에서 \(p\)값이 0.05보다 크기 때문에 귀무가설을 기각하지 못한다. 즉, 잔차에 대해 시차 10까지의 자기상관계수 \(\rho(1), \rho(2), \cdots, \rho(10)\) 중 유의한 자기상관계수가 적어도 1개 존재한다는 증거가 부족하며, 해당 시계열에 대해 ARMA(2,1) 모형을 가정하는 것이 적절하다.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".