Хугацаан цувааны дата

library(dplyr)
library(forecast)
load("USCPI.Rdata")

The Consumer Price Index (CPI) is a measure of the prices paid by urban consumers for a market basket of consumer goods and services. This index is normalized to equal 100 in the base year and is designed to compare price levels at one point in time with price levels at another point in time.

load("USCPI_quarterly.Rdata")

dplyr package ашиглан шинээр inf (\(Inf\)) болон d_inf (\(\Delta Inf\)) баганыг mutate командаар үүсгэн, filter командаар 1962 оноос хойшхи өгөгдлүүдийг сонгоно.

cpi = USCPI_q %>% 
  mutate(inf   = (CPI - lag(CPI))/CPI*400,
         d_inf = inf - lag(inf)) %>% 
  filter(year >= 1962)

Автокорреляци

auto-covariance: \(\gamma(h) \equiv \mathrm{cov}(y_t,y_{t+h})\) \[\hat{\gamma}(h)=\frac{1}{T}\sum_{t=h+1}^T (y_t-\bar{y}_{h+1,T})(y_{t-h}-\bar{y}_{1,T-h})\]

auto-correlation : \(\rho(h) \equiv \frac{\gamma_k}{\gamma_0}\) \[\hat{\rho}(h)=\frac{\hat{\gamma}(h)}{\widehat{var(y_t)}}\]

z <- acf(cpi$inf)

head(z$acf)
## [1] 1.0000000 0.8353934 0.7462774 0.7511767 0.6550678 0.5746760
z <- acf(cpi$d_inf)

head(z$acf)
## [1]  1.00000000 -0.23606225 -0.28823627  0.30902198 -0.05083883 -0.13806433

Авторегресс загвар

AR(1)

d_inf <- ts(cpi$d_inf, start=c(1962, 01), freq=4) #optional
d_inf
##              Qtr1         Qtr2         Qtr3         Qtr4
## 1962  0.972073852 -0.049933985 -0.356247566 -0.178315227
## 1963  0.303182667 -0.526372097  1.688197477 -1.348421587
## 1964  0.555973587 -0.992529763  0.256193544  0.936228236
## 1965 -0.602248001  1.304737473 -1.358430997  0.917679485
## 1966  1.603195690 -0.115674177 -0.153431759 -0.190036106
## 1967 -2.232668835  1.400937956  1.568039201  0.350609159
## 1968 -0.432073184 -0.037631617  1.472329472 -0.441517717
## 1969 -0.059101862  1.388695212 -0.806246511  0.629281990
## 1970  0.254768154 -0.777210873 -1.422941094  1.624845092
## 1971 -2.385007560  0.300473218  0.291832550 -1.004374663
## 1972  0.298977183 -0.661703888  0.615547674  0.911616481
## 1973  2.105479989  1.997486979 -0.456138449  2.131280669
## 1974  1.688058906 -1.125039480  0.515535241  0.969167871
## 1975 -3.546775047 -3.608418637  3.100503101 -0.624772157
## 1976 -2.705733499 -0.985802916  2.736623222 -0.548777559
## 1977  1.473262253 -0.345004662 -1.403687262  0.351059757
## 1978  0.959330301  2.124579664  0.202017774 -0.009083026
## 1979  0.740169842  2.498340377  0.158109377 -0.207721506
## 1980  2.908149049 -2.127571339 -5.687052942  3.538831717
## 1981 -0.141942713 -2.596403728  2.668822402 -4.439287865
## 1982 -2.875254250  2.172814194  1.131846665 -5.602945685
## 1983 -0.953214506  4.300856859 -0.710161840  0.093674871
## 1984  1.635198769 -1.855767680 -0.287633961 -0.029472443
## 1985  0.219841500 -0.032800964 -1.134419796  1.565273090
## 1986 -1.967941543 -4.025343904  4.387460275  0.345229313
## 1987  1.994321987 -0.289291300 -0.280431959 -0.501278151
## 1988 -0.602203726  1.439214990  0.281493941 -0.495400155
## 1989  0.170623669  1.869750367 -3.259637274  0.922159951
## 1990  2.743646826 -2.850534849  2.873152080 -0.113392246
## 1991 -3.710202539 -0.607630743  0.665404019  0.265518041
## 1992 -0.599076625  0.361127422 -0.023132084  0.443060030
## 1993 -0.584267068 -0.020717552 -1.026333771  1.446377345
## 1994 -1.288876456  0.259830854  1.411991396 -1.356656035
## 1995  0.601770771  0.326997621 -1.237374628  0.162621419
## 1996  1.356638477 -0.115305758 -1.121439206  1.156757681
## 1997 -1.023160569 -1.505550915  1.073383085  0.154280146
## 1998 -1.321284629  0.489506004  0.727848647 -0.172000243
## 1999 -0.411499635  1.515584394 -0.021926221 -0.021605117
## 2000  0.990310081 -0.808238485  0.511325981 -0.790898599
## 2001  0.958580140 -0.706166100 -2.183303263 -1.426582014
## 2002  1.948707294  1.771369436 -1.124964643 -0.010647786
## 2003  2.016504834 -3.711445792  1.805693217 -1.303396531
## 2004  2.921942568  0.524734473 -2.693044709  1.870359159
d_inf_ar1 <- arima(d_inf, order = c(1, 0, 0)) #
d_inf_ar1
## 
## Call:
## arima(x = d_inf, order = c(1, 0, 0))
## 
## Coefficients:
##           ar1  intercept
##       -0.2368     0.0138
## s.e.   0.0742     0.1008
## 
## sigma^2 estimated as 2.666:  log likelihood = -328.41,  aic = 662.81

\[\widehat{\Delta Inf_t}=0.0138-0.2368\Delta Inf_{t-1}\]

Forecast and Forecast Error

\[\hat{y}_{T+1|T}=\hat{\phi_0}+\hat{\phi_1}y_T\] \[Forecast Error=Y_{T+1}-\hat{y}_{T+1|T}=\]

2005:1 улиралын инфляцын прогнозийг дээрхи загвараас тооцвол

\[\widehat{\Delta Inf_{2005:1|2004:4}}=0.017-0.237*\Delta Inf_{2004:4}\] 0.01379557*(1+0.2368274) -0.2368274 *1.870359159 = -0.4258896 болно. Үүнийг forecast package-ийн forecast командаар хялбархан олж болно.

forecast(d_inf_ar1, h=1)
##         Point Forecast     Lo 80    Hi 80     Lo 95    Hi 95
## 2005 Q1     -0.4258895 -2.518274 1.666495 -3.625915 2.774136

Тиймээс 2005:1-ийн инфляцийн прогноз нь \[\widehat{Inf_{2005:1|2004:4}}=Inf_{2004:4}+\widehat{\Delta Inf_{2005:1|2004:4}}\] буюу \(3.4897924-0.4258896=3.06\%\) болно. 2005:1 улиралын инфляци \(2.4\%\) байсан учир прогнозийн алдаа \(2.4-3.06=-0.66\%\). 95% итгэх интервал (confidence interval) \([-3.62, 2.77]\) нь хэтэрхий том байгаа нь төдийлөн сайн прогноз болж чадахгүйг харуулж байна.

AR(p)

\(\Delta Inf\)\(AR(4)\) загварт тааруулж үзье.

d_inf_ar4 <- arima(d_inf, order = c(4, 0, 0))
d_inf_ar4
## 
## Call:
## arima(x = d_inf, order = c(4, 0, 0))
## 
## Coefficients:
##           ar1      ar2     ar3      ar4  intercept
##       -0.2560  -0.3226  0.1565  -0.0278     0.0138
## s.e.   0.0763   0.0776  0.0777   0.0765     0.0790
## 
## sigma^2 estimated as 2.244:  log likelihood = -313.78,  aic = 639.57

aic нь \(AR(1)\)-тэй харьцуулахад бага учир \(AIC\) шинжүүрээр \(AR(1)\) загвараас илүү таарамжтай. \[\widehat{\Delta Inf_t}=0.014 - 0.26\Delta Inf_{t-1}-0.32\Delta Inf_{t-2}+0.15\Delta Inf_{t-3}-0.027\Delta Inf_{t-4}\]

forecast(d_inf_ar4, h=1)
##         Point Forecast     Lo 80    Hi 80    Lo 95    Hi 95
## 2005 Q1       0.410863 -1.508919 2.330645 -2.52519 3.346916

2005:1-ийн инфляцийн прогноз \(3.4897924+0.410863=3.9\%\) бөгөөд прогнозийн алдаа нь \(2.4-3.9=-1.5\%\). Хэдийгээр \(AR(1)\)-тэй харьцуулахад прогнозийн алдаа их ч, 95%-ийн интервал багассан учир илүү сайн прогноз гэж дүгнэж болох юм.

Model Selection by AIC

\(p_{max}, q_{max}\)-г урьдчилан тогтоогоод бүхий л боломжит загварын хувьд arima функцээр AIC (or BIC)-үүдийг олон хамгийн бага байхаар сонгож болно. Үүнийг хялбарчлах нэг функц бол forecast-ийн auto.arima. (Улиралын нөлөөтэй өгөгдөл дээр auto.arima-н модель сонголт төдийлэн сайн биш тул arima-г ашиглахыг зөвлөе)

auto <- auto.arima(d_inf)
auto
## Series: d_inf 
## ARIMA(2,0,0)(0,0,2)[4] with zero mean     
## 
## Coefficients:
##           ar1      ar2     sma1     sma2
##       -0.3114  -0.3499  -0.1537  -0.2810
## s.e.   0.0730   0.0727   0.0785   0.0795
## 
## sigma^2 estimated as 2.129:  log likelihood=-309.6
## AIC=629.2   AICc=629.56   BIC=644.93
forecast(auto, h=1)
##         Point Forecast     Lo 80    Hi 80     Lo 95    Hi 95
## 2005 Q1     -0.7815375 -2.651324 1.088249 -3.641129 2.078054

\(\widehat{\Delta Inf_t}=-0.71\) болох богоод 2005:1-ийн инфляцийн прогноз \(3.4897924-0.7815375=2.7\). Прогнозийн 95%-ийн интервал бүх тохиолдолд маш урт байгаа нь инфляцийг таамаглах нь хичнээн хэцүүг харуулж байна.

Олон хувьсагчийн хугацаан цуваа-1. АРДЛ загвар

load("macro.Rdata")

Филиппсийн муруй: Ажилгүйдэл өндөр бол ирээдүйд инфляци буурна.

Инфляцид ажилгүйдлийн түвшин ч мөн нөлөөтэй байж болох учир дээрхи \(AR\) загваруудад энэ хувьсагчийг орхигдуулсан байна.

ARDL

\[y_t=\phi_0+\phi_1y_{t-1}+\cdots+\phi_py_{t-p}+\delta_1x_{t-1}+\cdots+\delta_1x{t-q}+u_t\]

macro2 <- macro %>% mutate(d1=lag(d_inf),
                 d2=lag(d_inf, 2),
                 d3=lag(d_inf, 3),
                 d4=lag(d_inf, 4),
                 u1=lag(unemp)) %>% 
  select(d_inf, d1, d2, d3, d4, u1)
reg <- lm(d_inf~., data=macro2)
summary(reg)
## 
## Call:
## lm(formula = d_inf ~ ., data = macro2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.0597 -0.7454  0.0952  0.7628  4.1853 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.28393    0.52715   2.436   0.0159 *  
## d1          -0.32090    0.07728  -4.152 5.20e-05 ***
## d2          -0.38653    0.08182  -4.724 4.82e-06 ***
## d3           0.08047    0.08258   0.974   0.3312    
## d4          -0.07265    0.07752  -0.937   0.3500    
## u1          -0.21477    0.08662  -2.479   0.0141 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.512 on 170 degrees of freedom
##   (4 observations deleted due to missingness)
## Multiple R-squared:  0.2331, Adjusted R-squared:  0.2106 
## F-statistic: 10.34 on 5 and 170 DF,  p-value: 1.141e-08
tail(macro)
##     year qtr       inf      d_inf    unemp
## 187 2003   3 2.1751006  1.8114533 6.133333
## 188 2003   4 0.8667591 -1.3083415 5.866667
## 189 2004   1 3.8057824  2.9390233 5.666667
## 190 2004   2 4.3359083  0.5301259 5.566667
## 191 2004   3 1.6227116 -2.7131967 5.433333
## 192 2004   4 3.5051154  1.8824038 5.433333

\[\widehat{\Delta Inf_{2005:1}}=1.28-0.32*1.88-0.38*(-2.71)+0.08*0.53-0.07*2.93-0.21*5.43=0.4\] 2005:1-ийн инфляцийн прогноз \(3.4897924+0.4=3.9\).

Голлох макро хувьсагчид

  • ДНБ өсөлт GDP growth
  • Ажилгүйдэл Unemployment
  • Инфляци Inflation
  • Хүү Interest rates
  • Валютын ханш Exchange rates

Granger Causality test

Granger Causality: \(y_t\)-ийн прогнозид \(x_t\)-ийн өнгөрсөн утгууд оролцож байвал \(x\) нь \(y\)-ийн Гренжэр шалтгаан.

Тиймд \(ARDL\) моделийн хувьд \(DL\)-ийн коэффициентүүд бүгд нэгэн зэрэг тэг гэсэн таамаглал шалгахыг Granger Causality Test гэнэ. (дараах лекцид \(VAR\) модел дээр дэлгэрэнгүй үзнэ)