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과 유사하게 생겼지만, 계수 $\phi$가 -1과 1사이의 값을 가진다는 추가적인 제약조건이 필요합니다.
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)은 아래와 같이 정의됩니다.
이 때$l$은 log-likelihood를 나타냅니다. LR statistic은 Chi-sqaure 분포를 따르며 두 모형의 파라미터수 차이만큼의 자유도(DF)를 가지게 됩니다.,
최종적으로 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 |