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
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}\]
\[\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]\) нь хэтэрхий том байгаа нь төдийлөн сайн прогноз болж чадахгүйг харуулж байна.
\(\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%-ийн интервал багассан учир илүү сайн прогноз гэж дүгнэж болох юм.
\(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%-ийн интервал бүх тохиолдолд маш урт байгаа нь инфляцийг таамаглах нь хичнээн хэцүүг харуулж байна.
load("macro.Rdata")Филиппсийн муруй: Ажилгүйдэл өндөр бол ирээдүйд инфляци буурна.
Инфляцид ажилгүйдлийн түвшин ч мөн нөлөөтэй байж болох учир дээрхи \(AR\) загваруудад энэ хувьсагчийг орхигдуулсан байна.
\[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\).
Granger Causality: \(y_t\)-ийн прогнозид \(x_t\)-ийн өнгөрсөн утгууд оролцож байвал \(x\) нь \(y\)-ийн Гренжэр шалтгаан.
Тиймд \(ARDL\) моделийн хувьд \(DL\)-ийн коэффициентүүд бүгд нэгэн зэрэг тэг гэсэн таамаглал шалгахыг Granger Causality Test гэнэ. (дараах лекцид \(VAR\) модел дээр дэлгэрэнгүй үзнэ)