1
library(astsa)
y <- window(ts(econ5[, 1]), start = 81, end = 150)
plot(y)

# linearny trend -> diferencujeme
# pozrieme si diferencie
plot(diff(y))
abline(h=0, col = "red")
abline(h=mean(diff(y)), col = "blue")
# aby povodne data mali linearny trend, v diferenciach treba konstantny clen
# teda diff(y) maju nenulovu strednu hodnotu
# treba zistit, ci je v nich jednotkovy koren
# -> ADF test
# diff(y) s nenulovou strednou hodnotou
# bez trendu
# -> type = "drift"
# skusme lags=5 (maximalny pocet ktory ma R uvazovat)
# BIC je standard
library(urca)

ur.df(diff(y), type = "drift", lags = 5, selectlags = "BIC")
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: -3.5473 6.2948
# toto da len statistiku -> treba summary
summary(ur.df(diff(y), type = "drift", lags = 5, selectlags = "BIC"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.80333 -0.22357 0.01922 0.22106 1.80569
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.02351 0.05155 0.456 0.650038
## z.lag.1 -0.44570 0.12565 -3.547 0.000763 ***
## z.diff.lag -0.06349 0.12886 -0.493 0.624015
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4045 on 60 degrees of freedom
## Multiple R-squared: 0.2413, Adjusted R-squared: 0.2161
## F-statistic: 9.544 on 2 and 60 DF, p-value: 0.000252
##
##
## Value of test-statistic is: -3.5473 6.2948
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1 6.70 4.71 3.86
# statistika -3.547
# kriticka hodnota -2.89
# statistika < kriticka hodnota -> H0 sa zamieta -> jednotkovy koren sa zamieta
# H1 je stacionarita -> data su stacionarne
# -> ARMA model pre diff(y)
# sarima(y, p, 1, q)
library(astsa)
acf2(diff(y)) # naraz ACF aj PACF

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## ACF 0.52 0.32 0.08 -0.13 -0.11 -0.20 -0.14 -0.21 -0.18 -0.10 -0.14 -0.18
## PACF 0.52 0.07 -0.15 -0.19 0.07 -0.13 -0.01 -0.17 -0.01 0.02 -0.12 -0.22
## [,13] [,14] [,15] [,16] [,17] [,18] [,19]
## ACF -0.18 -0.16 -0.13 -0.03 0.00 0.02 0.10
## PACF -0.04 -0.04 -0.10 -0.02 -0.06 -0.08 0.06
sarima(y, 1, 1, 0) # chceme konstatny clen kvoli trendu v podovnych datach
## initial value -0.799245
## iter 2 value -0.954532
## iter 3 value -0.954534
## iter 4 value -0.954536
## iter 4 value -0.954536
## iter 4 value -0.954536
## final value -0.954536
## converged
## initial value -0.958768
## iter 2 value -0.958822
## iter 3 value -0.958834
## iter 4 value -0.958834
## iter 5 value -0.958834
## iter 5 value -0.958834
## iter 5 value -0.958834
## final value -0.958834
## converged

## $fit
##
## Call:
## arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S),
## xreg = constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
## REPORT = 1, reltol = tol))
##
## Coefficients:
## ar1 constant
## 0.5098 0.0564
## s.e. 0.1019 0.0926
##
## sigma^2 estimated as 0.1463: log likelihood = -31.75, aic = 69.49
##
## $degrees_of_freedom
## [1] 67
##
## $ttable
## Estimate SE t.value p.value
## ar1 0.5098 0.1019 5.0038 0.0000
## constant 0.0564 0.0926 0.6092 0.5444
##
## $AIC
## [1] 1.007166
##
## $AICc
## [1] 1.009801
##
## $BIC
## [1] 1.104301
# rezidua OK
# treba overit stacionaritu a invertovatelnost
2
library(astsa)
y <- ts(window(gas, start = c(2006,2), end = c(2009,52)))
plot(y)

summary(ur.df(y, type = "drift", lags = 5, selectlags = "BIC"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -25.3462 -4.9850 0.2505 6.2098 20.4904
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.08163 2.55761 2.378 0.0184 *
## z.lag.1 -0.03015 0.01236 -2.439 0.0156 *
## z.diff.lag1 0.19176 0.06971 2.751 0.0065 **
## z.diff.lag2 0.17296 0.07013 2.466 0.0145 *
## z.diff.lag3 0.16363 0.06980 2.344 0.0201 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.203 on 196 degrees of freedom
## Multiple R-squared: 0.1452, Adjusted R-squared: 0.1277
## F-statistic: 8.322 on 4 and 196 DF, p-value: 3.21e-06
##
##
## Value of test-statistic is: -2.4392 2.9776
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1 6.52 4.63 3.81
# stat > krit. hodnota -> H0 nezamietame -> nezamietame nulovy koren
# -> data diferencujem
plot(diff(y))

# nulova stredna hodnota
# tvrdili sme ze y nema linearny trend
summary(ur.df(diff(y), type = "none", lags = 5, selectlags = "BIC"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -25.220 -5.945 1.077 6.739 21.409
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.60103 0.08465 -7.100 2.18e-11 ***
## z.diff.lag -0.18336 0.06975 -2.629 0.00924 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.373 on 198 degrees of freedom
## Multiple R-squared: 0.3901, Adjusted R-squared: 0.384
## F-statistic: 63.33 on 2 and 198 DF, p-value: < 2.2e-16
##
##
## Value of test-statistic is: -7.1004
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
# zamietame jednotkovy koren -> ARMA model pre diferencie
# sarima(y, p, 1, q, no.constant = TRUE)
# model pre diferencie nema mat konstantu -> no.constant=TRUE
acf2(diff(y))

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF 0.25 0.23 0.23 -0.01 0.07 0.04 -0.01 0.15 -0.02 0.04 0.10 0 -0.02
## PACF 0.25 0.18 0.15 -0.14 0.03 0.02 0.00 0.14 -0.09 0.02 0.06 0 -0.08
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25]
## ACF -0.02 -0.03 0.02 -0.02 0.06 -0.04 -0.03 -0.08 -0.12 -0.24 -0.18 -0.21
## PACF -0.04 0.02 0.03 -0.01 0.06 -0.11 0.00 -0.07 -0.06 -0.22 -0.04 -0.07
sarima(y, 0, 1, 3, no.constant = TRUE)
## initial value 2.283784
## iter 2 value 2.217640
## iter 3 value 2.216156
## iter 4 value 2.215974
## iter 5 value 2.215969
## iter 6 value 2.215969
## iter 6 value 2.215969
## iter 6 value 2.215969
## final value 2.215969
## converged
## initial value 2.216032
## iter 2 value 2.216029
## iter 3 value 2.216029
## iter 3 value 2.216029
## iter 3 value 2.216029
## final value 2.216029
## converged

## $fit
##
## Call:
## arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S),
## include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
## REPORT = 1, reltol = tol))
##
## Coefficients:
## ma1 ma2 ma3
## 0.2039 0.2128 0.2418
## s.e. 0.0673 0.0696 0.0662
##
## sigma^2 estimated as 84: log likelihood = -748.8, aic = 1505.61
##
## $degrees_of_freedom
## [1] 203
##
## $ttable
## Estimate SE t.value p.value
## ma1 0.2039 0.0673 3.0276 0.0028
## ma2 0.2128 0.0696 3.0555 0.0025
## ma3 0.2418 0.0662 3.6531 0.0003
##
## $AIC
## [1] 7.30877
##
## $AICc
## [1] 7.309347
##
## $BIC
## [1] 7.373389
# rezidua OK
# treba overit stacionaritu a invertovatelnost