| Nile {datasets} | R Documentation |
Flow of the River Nile
Description
Measurements of the annual flow of the river Nile at Aswan (formerly
‘Assuan’), 1871–1970, in 10^8 m^3,
“with apparent changepoint near 1898”
(Cobb 1978, table 1 on page 249).
Usage
Nile
Format
A time series of length 100.
Source
Durbin J, Koopman SJ (2001).
Time Series Analysis by State Space Methods.
Oxford University Press.
ISBN 0198523548.
Data was available from the book website, now archived at
https://web.archive.org/web/20020304222057/http://www.ssfpack.com/dkbook/.
References
Balke NS (1993). “Detecting Level Shifts in Time Series.” Journal of Business & Economic Statistics, 11(1), 81–92. doi:10.1080/07350015.1993.10509934.
Cobb GW (1978). “The Problem of the Nile: Conditional Solution to a Changepoint Problem.” Biometrika, 65(2), 243–251. doi:10.1093/biomet/65.2.243.
Examples
require(stats); require(graphics)
par(mfrow = c(2, 2))
plot(Nile)
acf(Nile)
pacf(Nile)
ar(Nile) # selects order 2
cpgram(ar(Nile)$resid)
par(mfrow = c(1, 1))
arima(Nile, c(2, 0, 0))
## Now consider missing values, following Durbin & Koopman
NileNA <- Nile
NileNA[c(21:40, 61:80)] <- NA
arima(NileNA, c(2, 0, 0))
plot(NileNA)
pred <-
predict(arima(window(NileNA, 1871, 1890), c(2, 0, 0)), n.ahead = 20)
lines(pred$pred, lty = 3, col = "red")
lines(pred$pred + 2*pred$se, lty = 2, col = "blue")
lines(pred$pred - 2*pred$se, lty = 2, col = "blue")
pred <-
predict(arima(window(NileNA, 1871, 1930), c(2, 0, 0)), n.ahead = 20)
lines(pred$pred, lty = 3, col = "red")
lines(pred$pred + 2*pred$se, lty = 2, col = "blue")
lines(pred$pred - 2*pred$se, lty = 2, col = "blue")
## Structural time series models
par(mfrow = c(3, 1))
plot(Nile)
## local level model
(fit <- StructTS(Nile, type = "level"))
lines(fitted(fit), lty = 2) # contemporaneous smoothing
lines(tsSmooth(fit), lty = 2, col = 4) # fixed-interval smoothing
plot(residuals(fit)); abline(h = 0, lty = 3)
## local trend model
(fit2 <- StructTS(Nile, type = "trend")) ## constant trend fitted
pred <- predict(fit, n.ahead = 30)
## with 50% confidence interval
ts.plot(Nile, pred$pred,
pred$pred + 0.67*pred$se, pred$pred -0.67*pred$se)
## Now consider missing values
plot(NileNA)
(fit3 <- StructTS(NileNA, type = "level"))
lines(fitted(fit3), lty = 2)
lines(tsSmooth(fit3), lty = 3)
plot(residuals(fit3)); abline(h = 0, lty = 3)