2020. 12. 21. 23:51ㆍ계량경제학
Autoregrssive model(AR model)은 예측하는 문제에 있어 정말 활발히 활용되고 있는 모형입니다. 해당 모형의 기본적인 아이디어는 time t에 일어난 일을 예측하는데 제일 좋은 Predictor는 t-1에서 일어난 일이라는 것입니다.
가장 기본적인 1차 AR model은 아래와 같습니다.

좀 더 고차수를 가지는 AR model은 다음과 같이 표현할 수 있습니다.

Backshift operator를 활용하면 아래와 같습니다.

위와 같이 차수 p를 가진 모형을 일반적으로 AR(p) 모형이라고 부릅니다.
전통적인 Regression과 유사하게 생겼지만, 계수
Python을 활용하여 AR model을 추정해보겠습니다. 다만 여기서는, 모형을 식별하는 과정은 생락하고 차후에 Box-Jenkins Modeling Process를 다룰때 모형 식별 및 진단과정에 대해서 정리하도록 하겠습니다.
### AR model
from statsmodels.tsa.arima_model import ARMA
from scipy.stats.distributions import chi2
##AR(1)
model_ar_1 = ARMA(df["Close"], order = (1,0))
result_ar_1 = model_ar_1.fit()
result_ar_1.summary()
'''
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
const 1401.7855 1230.944 1.139 0.255 -1010.820 3814.391
ar.L1.Close 0.9999 0.000 9517.978 0.000 1.000 1.000
=============================================================================
'''
##AR(2)
model_ar_2 = ARMA(df["Close"], order=(2,0))
results_ar_2 = model_ar_2.fit()
results_ar_2.summary()
'''
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
const 1401.7401 1261.399 1.111 0.266 -1070.556 3874.037
ar.L1.Close 0.9593 0.001 1246.935 0.000 0.958 0.961
ar.L2.Close 0.0407 0.001 52.839 0.000 0.039 0.042
=============================================================================
'''
##AR(3)
model_ar_3 = ARMA(df["Close"], order=(3,0))
results_ar_3 = model_ar_3.fit()
results_ar_3.summary()
'''
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
const 1401.7771 1290.464 1.086 0.277 -1127.485 3931.039
ar.L1.Close 0.9576 0.001 1421.840 0.000 0.956 0.959
ar.L2.Close 0.0002 0.012 0.013 0.990 -0.024 0.024
ar.L3.Close 0.0422 0.012 3.482 0.000 0.018 0.066
=============================================================================
'''
##AR(4)
model_ar_4 = ARMA(df["Close"], order=(4,0))
results_ar_4 = model_ar_4.fit()
results_ar_4.summary()
'''
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
const 1401.7724 1290.036 1.087 0.277 -1126.652 3930.197
ar.L1.Close 0.9576 0.001 1419.407 0.000 0.956 0.959
ar.L2.Close 0.0002 0.012 0.013 0.990 -0.024 0.024
ar.L3.Close 0.0426 0.017 2.534 0.011 0.010 0.076
ar.L4.Close -0.0004 0.012 -0.032 0.975 -0.024 0.023
=============================================================================
'''
추가적으로 Likelihood Ratio Test에 대해서 정리하도록 하겠습니다. Likeihood Ratio(LR)은 아래와 같이 정의됩니다.

이 때
최종적으로 Chi-square 분포를 활용하여 유의성 검증을 하게 되며, LR Test의 귀무가설 및 대립가설은 아래와 같습니다.

따라서 LR Test 결과가 0.05미만이라면 Null hypothesis를 기각하고 대립가서를 채택하게 됩니다. 일반적으로 Null hypothesis에는 차수가 낮은 AR 모형을 설정하게 됩니다.
def LLR_test(mod_1, mod_2, DF=1):
L1 = mod_1.fit().llf
L2 = mod_2.fit().llf
LR = (2*(L2-L1))
p = chi2.sf(LR, DF).round(3)
return p
LLR_test(model_ar_1, model_ar_2) ## 0.001
LLR_test(model_ar_2, model_ar_3) ## 0.001
LLR_test(model_ar_3, model_ar_4) ## 0.975
LLR_test(model_ar_2, model_ar_4, DF=2) ##0.002
ACF, PACF등을 이용하여 더 자세히 모형을 식별해야겠지만, 단순히 LR Test를 보면, AR(3)이 가장 타당한 모형이 될 가능성이 높다고 해석해볼 수 있을 것입니다.
'계량경제학' 카테고리의 다른 글
시계열(Time series) > Diagnosing Models(ARMA, ARIMA)(1/2) (0) | 2020.12.27 |
---|---|
시계열(Time series) > Moving average model(이동평균모형) (2) | 2020.12.23 |
시계열(Time series) > ACF, PACF (0) | 2020.12.19 |
시계열(Time series) > White Noise, Random walk (1) | 2020.12.06 |
시계열(Time series) > 데이터 핸들링 (0) | 2020.12.04 |