1
2R version 3.6.2 (2019-12-12) -- "Dark and Stormy Night"
3Copyright (C) 2019 The R Foundation for Statistical Computing
4Platform: x86_64-pc-linux-gnu (64-bit)
5
6R is free software and comes with ABSOLUTELY NO WARRANTY.
7You are welcome to redistribute it under certain conditions.
8Type 'license()' or 'licence()' for distribution details.
9
10R is a collaborative project with many contributors.
11Type 'contributors()' for more information and
12'citation()' on how to cite R or R packages in publications.
13
14Type 'demo()' for some demos, 'help()' for on-line help, or
15'help.start()' for an HTML browser interface to help.
16Type 'q()' to quit R.
17
18> ###################################################
19> ### chunk number 1: setup
20> ###################################################
21> options(prompt = "R> ", continue = "+  ", width = 64,
22+   digits = 4, show.signif.stars = FALSE, useFancyQuotes = FALSE)
23R>
24R> options(SweaveHooks = list(onefig =   function() {par(mfrow = c(1,1))},
25+                             twofig =   function() {par(mfrow = c(1,2))},
26+                             threefig = function() {par(mfrow = c(1,3))},
27+                             fourfig =  function() {par(mfrow = c(2,2))},
28+                             sixfig =   function() {par(mfrow = c(3,2))}))
29R>
30R> library("AER")
31Loading required package: car
32Loading required package: carData
33Loading required package: lmtest
34Loading required package: zoo
35
36Attaching package: 'zoo'
37
38The following objects are masked from 'package:base':
39
40    as.Date, as.Date.numeric
41
42Loading required package: sandwich
43Loading required package: survival
44R>
45R> suppressWarnings(RNGversion("3.5.0"))
46R> set.seed(1071)
47R>
48R>
49R> ###################################################
50R> ### chunk number 2: options
51R> ###################################################
52R> options(digits = 6)
53R>
54R>
55R> ###################################################
56R> ### chunk number 3: ts-plot eval=FALSE
57R> ###################################################
58R> ## data("UKNonDurables")
59R> ## plot(UKNonDurables)
60R>
61R>
62R> ###################################################
63R> ### chunk number 4: UKNonDurables-data
64R> ###################################################
65R> data("UKNonDurables")
66R>
67R>
68R> ###################################################
69R> ### chunk number 5: tsp
70R> ###################################################
71R> tsp(UKNonDurables)
72[1] 1955.00 1988.75    4.00
73R>
74R>
75R> ###################################################
76R> ### chunk number 6: window
77R> ###################################################
78R> window(UKNonDurables, end = c(1956, 4))
79      Qtr1  Qtr2  Qtr3  Qtr4
801955 24030 25620 26209 27167
811956 24620 25972 26285 27659
82R>
83R>
84R> ###################################################
85R> ### chunk number 7: filter eval=FALSE
86R> ###################################################
87R> ## data("UKDriverDeaths")
88R> ## plot(UKDriverDeaths)
89R> ## lines(filter(UKDriverDeaths, c(1/2, rep(1, 11), 1/2)/12),
90R> ##   col = 2)
91R>
92R>
93R> ###################################################
94R> ### chunk number 8: ts-plot1
95R> ###################################################
96R> data("UKNonDurables")
97R> plot(UKNonDurables)
98R> data("UKDriverDeaths")
99R> plot(UKDriverDeaths)
100R> lines(filter(UKDriverDeaths, c(1/2, rep(1, 11), 1/2)/12),
101+    col = 2)
102R>
103R>
104R> ###################################################
105R> ### chunk number 9: filter1 eval=FALSE
106R> ###################################################
107R> ## data("UKDriverDeaths")
108R> ## plot(UKDriverDeaths)
109R> ## lines(filter(UKDriverDeaths, c(1/2, rep(1, 11), 1/2)/12),
110R> ##   col = 2)
111R>
112R>
113R> ###################################################
114R> ### chunk number 10: rollapply
115R> ###################################################
116R> plot(rollapply(UKDriverDeaths, 12, sd))
117R>
118R>
119R> ###################################################
120R> ### chunk number 11: ar-sim
121R> ###################################################
122R> set.seed(1234)
123R> x <- filter(rnorm(100), 0.9, method = "recursive")
124R>
125R>
126R> ###################################################
127R> ### chunk number 12: decompose
128R> ###################################################
129R> dd_dec <- decompose(log(UKDriverDeaths))
130R> dd_stl <- stl(log(UKDriverDeaths), s.window = 13)
131R>
132R>
133R> ###################################################
134R> ### chunk number 13: decompose-components
135R> ###################################################
136R> plot(dd_dec$trend, ylab = "trend")
137R> lines(dd_stl$time.series[,"trend"], lty = 2, lwd = 2)
138R>
139R>
140R> ###################################################
141R> ### chunk number 14: seat-mean-sd
142R> ###################################################
143R> plot(dd_dec$trend, ylab = "trend")
144R> lines(dd_stl$time.series[,"trend"], lty = 2, lwd = 2)
145R> plot(rollapply(UKDriverDeaths, 12, sd))
146R>
147R>
148R> ###################################################
149R> ### chunk number 15: stl
150R> ###################################################
151R> plot(dd_stl)
152R>
153R>
154R> ###################################################
155R> ### chunk number 16: Holt-Winters
156R> ###################################################
157R> dd_past <- window(UKDriverDeaths, end = c(1982, 12))
158R> ## dd_hw <- try(HoltWinters(dd_past)) ## IGNORE_RDIFF, excluded due to small numeric deviations on different platforms
159R> ## if(!inherits(dd_hw, "try-error")) {
160R> ## dd_pred <- predict(dd_hw, n.ahead = 24)
161R> ##
162R> ##
163R> ## ###################################################
164R> ## ### chunk number 17: Holt-Winters-plot
165R> ## ###################################################
166R> ## plot(dd_hw, dd_pred, ylim = range(UKDriverDeaths))
167R> ## lines(UKDriverDeaths)
168R> ##
169R> ##
170R> ## ###################################################
171R> ## ### chunk number 18: Holt-Winters-plot1
172R> ## ###################################################
173R> ## plot(dd_hw, dd_pred, ylim = range(UKDriverDeaths))
174R> ## lines(UKDriverDeaths)
175R> ## }
176R>
177R> ###################################################
178R> ### chunk number 19: acf eval=FALSE
179R> ###################################################
180R> ## acf(x)
181R> ## pacf(x)
182R>
183R>
184R> ###################################################
185R> ### chunk number 20: acf1
186R> ###################################################
187R> acf(x, ylim = c(-0.2, 1))
188R> pacf(x, ylim = c(-0.2, 1))
189R>
190R>
191R> ###################################################
192R> ### chunk number 21: ar
193R> ###################################################
194R> ar(x)
195
196Call:
197ar(x = x)
198
199Coefficients:
200    1
2010.928
202
203Order selected 1  sigma^2 estimated as  1.29
204R>
205R>
206R> ###################################################
207R> ### chunk number 22: window-non-durab
208R> ###################################################
209R> nd <- window(log(UKNonDurables), end = c(1970, 4))
210R>
211R>
212R> ###################################################
213R> ### chunk number 23: non-durab-acf
214R> ###################################################
215R> acf(diff(nd), ylim = c(-1, 1))
216R> pacf(diff(nd), ylim = c(-1, 1))
217R> acf(diff(diff(nd, 4)), ylim = c(-1, 1))
218R> pacf(diff(diff(nd, 4)), ylim = c(-1, 1))
219R>
220R>
221R> ###################################################
222R> ### chunk number 24: non-durab-acf1
223R> ###################################################
224R> acf(diff(nd), ylim = c(-1, 1))
225R> pacf(diff(nd), ylim = c(-1, 1))
226R> acf(diff(diff(nd, 4)), ylim = c(-1, 1))
227R> pacf(diff(diff(nd, 4)), ylim = c(-1, 1))
228R>
229R>
230R> ###################################################
231R> ### chunk number 25: arima-setup
232R> ###################################################
233R> nd_pars <- expand.grid(ar = 0:2, diff = 1, ma = 0:2,
234+    sar = 0:1, sdiff = 1, sma = 0:1)
235R> nd_aic <- rep(0, nrow(nd_pars))
236R> for(i in seq(along = nd_aic)) nd_aic[i] <- AIC(arima(nd,
237+    unlist(nd_pars[i, 1:3]), unlist(nd_pars[i, 4:6])),
238+    k = log(length(nd)))
239R> nd_pars[which.min(nd_aic),]
240   ar diff ma sar sdiff sma
24122  0    1  1   0     1   1
242R>
243R>
244R> ###################################################
245R> ### chunk number 26: arima
246R> ###################################################
247R> nd_arima <- arima(nd, order = c(0,1,1), seasonal = c(0,1,1))
248R> nd_arima
249
250Call:
251arima(x = nd, order = c(0, 1, 1), seasonal = c(0, 1, 1))
252
253Coefficients:
254         ma1    sma1
255      -0.353  -0.583
256s.e.   0.143   0.138
257
258sigma^2 estimated as 9.65e-05:  log likelihood = 188.14,  aic = -370.27
259R>
260R>
261R> ###################################################
262R> ### chunk number 27: tsdiag
263R> ###################################################
264R> tsdiag(nd_arima)
265R>
266R>
267R> ###################################################
268R> ### chunk number 28: tsdiag1
269R> ###################################################
270R> tsdiag(nd_arima)
271R>
272R>
273R> ###################################################
274R> ### chunk number 29: arima-predict
275R> ###################################################
276R> nd_pred <- predict(nd_arima, n.ahead = 18 * 4)
277R>
278R>
279R> ###################################################
280R> ### chunk number 30: arima-compare
281R> ###################################################
282R> plot(log(UKNonDurables))
283R> lines(nd_pred$pred, col = 2)
284R>
285R>
286R> ###################################################
287R> ### chunk number 31: arima-compare1
288R> ###################################################
289R> plot(log(UKNonDurables))
290R> lines(nd_pred$pred, col = 2)
291R>
292R>
293R> ###################################################
294R> ### chunk number 32: pepper
295R> ###################################################
296R> data("PepperPrice")
297R> plot(PepperPrice, plot.type = "single", col = 1:2)
298R> legend("topleft", c("black", "white"), bty = "n",
299+  col = 1:2, lty = rep(1,2))
300R>
301R>
302R> ###################################################
303R> ### chunk number 33: pepper1
304R> ###################################################
305R> data("PepperPrice")
306R> plot(PepperPrice, plot.type = "single", col = 1:2)
307R> legend("topleft", c("black", "white"), bty = "n",
308+  col = 1:2, lty = rep(1,2))
309R>
310R>
311R> ###################################################
312R> ### chunk number 34: adf1
313R> ###################################################
314R> library("tseries")
315R> adf.test(log(PepperPrice[, "white"]))
316
317	Augmented Dickey-Fuller Test
318
319data:  log(PepperPrice[, "white"])
320Dickey-Fuller = -1.744, Lag order = 6, p-value = 0.684
321alternative hypothesis: stationary
322
323R>
324R>
325R> ###################################################
326R> ### chunk number 35: adf1
327R> ###################################################
328R> adf.test(diff(log(PepperPrice[, "white"])))
329
330	Augmented Dickey-Fuller Test
331
332data:  diff(log(PepperPrice[, "white"]))
333Dickey-Fuller = -5.336, Lag order = 6, p-value = 0.01
334alternative hypothesis: stationary
335
336Warning message:
337In adf.test(diff(log(PepperPrice[, "white"]))) :
338  p-value smaller than printed p-value
339R>
340R>
341R> ###################################################
342R> ### chunk number 36: pp
343R> ###################################################
344R> pp.test(log(PepperPrice[, "white"]), type = "Z(t_alpha)")
345
346	Phillips-Perron Unit Root Test
347
348data:  log(PepperPrice[, "white"])
349Dickey-Fuller Z(t_alpha) = -1.644, Truncation lag
350parameter = 5, p-value = 0.726
351alternative hypothesis: stationary
352
353R>
354R>
355R> ###################################################
356R> ### chunk number 37: urca eval=FALSE
357R> ###################################################
358R> ## library("urca")
359R> ## pepper_ers <- ur.ers(log(PepperPrice[, "white"]),
360R> ##   type = "DF-GLS", model = "const", lag.max = 4)
361R> ## summary(pepper_ers)
362R>
363R>
364R> ###################################################
365R> ### chunk number 38: kpss
366R> ###################################################
367R> kpss.test(log(PepperPrice[, "white"]))
368
369	KPSS Test for Level Stationarity
370
371data:  log(PepperPrice[, "white"])
372KPSS Level = 0.6173, Truncation lag parameter = 5,
373p-value = 0.0211
374
375R>
376R>
377R> ###################################################
378R> ### chunk number 39: po
379R> ###################################################
380R> po.test(log(PepperPrice))
381
382	Phillips-Ouliaris Cointegration Test
383
384data:  log(PepperPrice)
385Phillips-Ouliaris demeaned = -24.1, Truncation lag
386parameter = 2, p-value = 0.024
387
388R>
389R>
390R> ###################################################
391R> ### chunk number 40: joh-trace
392R> ###################################################
393R> library("urca")
394R> pepper_jo <- ca.jo(log(PepperPrice), ecdet = "const",
395+    type = "trace")
396R> ## summary(pepper_jo) ## IGNORE_RDIFF, excluded due to small numeric deviations on different platforms
397R>
398R>
399R> ###################################################
400R> ### chunk number 41: joh-lmax eval=FALSE
401R> ###################################################
402R> ## pepper_jo2 <- ca.jo(log(PepperPrice), ecdet = "const", type = "eigen")
403R> ## summary(pepper_jo2)
404R>
405R>
406R> ###################################################
407R> ### chunk number 42: dynlm-by-hand
408R> ###################################################
409R> dd <- log(UKDriverDeaths)
410R> dd_dat <- ts.intersect(dd, dd1 = lag(dd, k = -1),
411+    dd12 = lag(dd, k = -12))
412R> lm(dd ~ dd1 + dd12, data = dd_dat)
413
414Call:
415lm(formula = dd ~ dd1 + dd12, data = dd_dat)
416
417Coefficients:
418(Intercept)          dd1         dd12
419      0.421        0.431        0.511
420
421R>
422R>
423R> ###################################################
424R> ### chunk number 43: dynlm
425R> ###################################################
426R> library("dynlm")
427R> dynlm(dd ~ L(dd) + L(dd, 12))
428
429Time series regression with "ts" data:
430Start = 1970(1), End = 1984(12)
431
432Call:
433dynlm(formula = dd ~ L(dd) + L(dd, 12))
434
435Coefficients:
436(Intercept)        L(dd)    L(dd, 12)
437      0.421        0.431        0.511
438
439R>
440R>
441R> ###################################################
442R> ### chunk number 44: efp
443R> ###################################################
444R> library("strucchange")
445R> dd_ocus <- efp(dd ~ dd1 + dd12, data = dd_dat,
446+    type = "OLS-CUSUM")
447R>
448R>
449R> ###################################################
450R> ### chunk number 45: efp-test
451R> ###################################################
452R> sctest(dd_ocus)
453
454	OLS-based CUSUM test
455
456data:  dd_ocus
457S0 = 1.487, p-value = 0.0241
458
459R>
460R>
461R> ###################################################
462R> ### chunk number 46: efp-plot eval=FALSE
463R> ###################################################
464R> ## plot(dd_ocus)
465R>
466R>
467R> ###################################################
468R> ### chunk number 47: Fstats
469R> ###################################################
470R> dd_fs <- Fstats(dd ~ dd1 + dd12, data = dd_dat, from = 0.1)
471R> plot(dd_fs)
472R> sctest(dd_fs)
473
474	supF test
475
476data:  dd_fs
477sup.F = 19.33, p-value = 0.00672
478
479R>
480R>
481R> ###################################################
482R> ### chunk number 48: ocus-supF
483R> ###################################################
484R> plot(dd_ocus)
485R> plot(dd_fs, main = "supF test")
486R>
487R>
488R> ###################################################
489R> ### chunk number 49: GermanM1
490R> ###################################################
491R> data("GermanM1")
492R> LTW <- dm ~ dy2 + dR + dR1 + dp + m1 + y1 + R1 + season
493R>
494R>
495R> ###################################################
496R> ### chunk number 50: re eval=FALSE
497R> ###################################################
498R> ## m1_re <- efp(LTW, data = GermanM1, type = "RE")
499R> ## plot(m1_re)
500R>
501R>
502R> ###################################################
503R> ### chunk number 51: re1
504R> ###################################################
505R> m1_re <- efp(LTW, data = GermanM1, type = "RE")
506R> plot(m1_re)
507R>
508R>
509R> ###################################################
510R> ### chunk number 52: dating
511R> ###################################################
512R> dd_bp <- breakpoints(dd ~ dd1 + dd12, data = dd_dat, h = 0.1)
513R>
514R>
515R> ###################################################
516R> ### chunk number 53: dating-coef
517R> ###################################################
518R> coef(dd_bp, breaks = 2)
519                   (Intercept)      dd1     dd12
5201970(1) - 1973(10)     1.45776 0.117323 0.694480
5211973(11) - 1983(1)     1.53421 0.218214 0.572330
5221983(2) - 1984(12)     1.68690 0.548609 0.214166
523R>
524R>
525R> ###################################################
526R> ### chunk number 54: dating-plot eval=FALSE
527R> ###################################################
528R> ## plot(dd)
529R> ## lines(fitted(dd_bp, breaks = 2), col = 4)
530R> ## lines(confint(dd_bp, breaks = 2))
531R>
532R>
533R> ###################################################
534R> ### chunk number 55: dating-plot1
535R> ###################################################
536R> plot(dd_bp, legend = FALSE, main = "")
537R> plot(dd)
538R> lines(fitted(dd_bp, breaks = 2), col = 4)
539R> lines(confint(dd_bp, breaks = 2))
540R>
541R>
542R> ###################################################
543R> ### chunk number 56: StructTS
544R> ###################################################
545R> dd_struct <- StructTS(log(UKDriverDeaths))
546R>
547R>
548R> ###################################################
549R> ### chunk number 57: StructTS-plot eval=FALSE
550R> ###################################################
551R> ## plot(cbind(fitted(dd_struct), residuals(dd_struct)))
552R>
553R>
554R> ###################################################
555R> ### chunk number 58: StructTS-plot1
556R> ###################################################
557R> dd_struct_plot <- cbind(fitted(dd_struct), residuals = residuals(dd_struct))
558R> colnames(dd_struct_plot) <- c("level", "slope", "season", "residuals")
559R> plot(dd_struct_plot, main = "")
560R>
561R>
562R> ###################################################
563R> ### chunk number 59: garch-plot
564R> ###################################################
565R> data("MarkPound")
566R> plot(MarkPound, main = "")
567R>
568R>
569R> ###################################################
570R> ### chunk number 60: garch
571R> ###################################################
572R> data("MarkPound")
573R> mp <- garch(MarkPound, grad = "numerical", trace = FALSE)
574R> summary(mp)
575
576Call:
577garch(x = MarkPound, grad = "numerical", trace = FALSE)
578
579Model:
580GARCH(1,1)
581
582Residuals:
583     Min       1Q   Median       3Q      Max
584-6.79739 -0.53703 -0.00264  0.55233  5.24867
585
586Coefficient(s):
587    Estimate  Std. Error  t value Pr(>|t|)
588a0    0.0109      0.0013     8.38   <2e-16
589a1    0.1546      0.0139    11.14   <2e-16
590b1    0.8044      0.0160    50.13   <2e-16
591
592Diagnostic Tests:
593	Jarque Bera Test
594
595data:  Residuals
596X-squared = 1060, df = 2, p-value <2e-16
597
598
599	Box-Ljung test
600
601data:  Squared.Residuals
602X-squared = 2.478, df = 1, p-value = 0.115
603
604R>
605R>
606R>
607> proc.time()
608   user  system elapsed
609  4.372   2.273   3.386
610