Nile                package:datasets                R Documentation

_F_l_o_w _o_f _t_h_e _R_i_v_e_r _N_i_l_e

_D_e_s_c_r_i_p_t_i_o_n:

     Measurements of the annual flow of the river Nile at Ashwan
     1871-1970.

_U_s_a_g_e:

     Nile

_F_o_r_m_a_t:

     A time series of length 100.

_S_o_u_r_c_e:

     Durbin, J. and Koopman, S. J. (2001) _Time Series Analysis by
     State Space Methods._  Oxford University Press. <URL:
     http://www.ssfpack.com/dkbook/>

_R_e_f_e_r_e_n_c_e_s:

     Balke, N. S. (1993) Detecting level shifts in time series.
     _Journal of Business and Economic Statistics_ *11*, 81-92.

     Cobb, G. W. (1978) The problem of the Nile: conditional solution
     to a change-point problem.  _Biometrika_ *65*, 243-51.

_E_x_a_m_p_l_e_s:

     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)

