|
Estimates the optimum differencing for a non-stationary time series using an autoregressive model, AR(p), to adjust the series for seasonality.
Required Arguments
Z — Vector containing the time series. (Input)
MAXLAG — Maximum
lag allowed when fitting an AR(p) model,
1 <= MAXLAG <=
NOBSZ/2.
(Input)
IPERA — NDIFF by nipera
matrix containing the seasonal differences to test. (Input)
Here,
nipera =
SIZE(IPERA, 2) must be greater
than or equal to one.
All elements of IPERA must be greater
than or equal to one.
W — Allocatable array which, on return, will contain the differenced series. (Output)
NOBSZ— Number of
observations in time series Z. (Input)
Default:
NOBSZ = SIZE(Z).
NDIFF — Number of
differences to use. (Input)
NDIFF must be greater
than or equal to one.
Default: NDIFF = SIZE(IPERA, 1).
IORDA — NDIFF by niorda
matrix containing the possible orders of each difference given in IPERA.
(Input)
Here, niorda = SIZE(IORDA, 2) must be greater
than or equal to one.
All elements of IORDA must be
non-negative.
Default: IORDA is an NDIFF by 1 matrix,
where IORDA
(1:NDIFF, 1) =1.
IMISS — Missing
value option. (Input)
Default: IMISS = 0
IMISS |
Action |
0 |
Include missing values in W. |
1 |
Exclude missing values from W. |
NOBSW — Number of
observations in the differenced series W. (Output)
NOBSW = NOBSZ - IMISS * NLOST
NLOST — Number of observations lost because of differencing the time series Z. (Output)
IOPT_PERA — Vector of length NDIFF containing the column from matrix IPERA which produced the differenced series represented in W. (Output)
IOPT_ORDA — Vector of length NDIFF containing the column from matrix IORDA which produced the differenced series represented in W. (Output)
NPAR — The optimum value for the autoregressive lag. (Output)
AIC — Akaike's Information Criterion (AIC) for the optimum seasonally adjusted model. (Output)
Generic: CALL SEASONAL_FIT (Z, MAXLAG, IPERA, W [,…])
Specific: The specific interface names are S_SEASONAL_FIT and D_SEASONAL_FIT.
Many time series contain seasonal trends and cycles that
can be modeled by first differencing the series. For example, if the
correlation is strong from one period to the next, the series might be
differenced by a lag of 1. Instead of fitting a model to the series , the model is fitted to the transformed series:
. Higher order lags or differences are warranted if the
series has, for example, a cycle every 4 or 13 weeks.
Routine SEASONAL_FIT
does not center the original series. For every combination of columns in
IPERA
and IORDA,
the series is converted to the
seasonally adjusted series using the following computation
.
where ,
represent specific
columns of arrays IPERA
and IORDA
respectively, and
= NDIFF.
This transformation of the series to
is accomplished using
routine DIFF.
After this transformation, a call is made to AUTO_UNI_AR
to automatically determine the optimum lag for an AR(p) representation
for
. This procedure is repeated
for every possible combination of columns of IPERA
and IORDA.
The series with the minimum AIC is identified as the optimum representation
and returned in vector W.
Consider the Airline Data (Box, Jenkins and Reinsel 1994, p. 547) consisting of the monthly total number of international airline passengers from January 1949 through December 1960. Routine SEASONAL_FIT is used to compute the optimum seasonality representation of the adjusted series
where or
and
A differenced series with minimum AIC,
is identified in Figure 8-1-Differenced Series.
Note: The numerical output may be viewed by removing the comments from the statement lines in the following example.
USE GDATA_INT
USE SEASONAL_FIT_INT
IMPLICIT NONE
integer :: nout
integer, parameter :: nobs = 144, ndiff = 2, maxlag = 10
integer :: nlost, npar, i
integer :: NROW, NCOL
real, dimension(144,1) :: z
real :: aic
integer, dimension(2,2) :: ipera
integer :: nobsw
real, dimension(:), allocatable :: w
integer, dimension(ndiff) :: iopt_pera, iopt_orda
ipera(1,1) = 1; ipera(1,2) = 1
ipera(2,1) = 1; ipera(2,2) = 12
CALL GDATA (4, z, NROW, NCOL)
CALL seasonal_fit(z(:,1), maxlag, ipera, w, NDIFF = ndiff, NLOST = nlost, &
IOPT_PERA = iopt_pera, NOBSW = nobsw, &
IOPT_ORDA = iopt_orda, NPAR = npar, AIC = aic)
CALL UMACH(2,nout)
! WRITE (nout,*) "nlost =", nlost
! WRITE (nout,*) "iopt_pera = (", iopt_pera(1),",", iopt_pera(2), ")"
! WRITE (nout,*) "iopt_orda = (", iopt_orda(1),",", iopt_orda(2), ")"
! WRITE (nout,*) "Order of optimum AR process: ", npar
! WRITE (nout,*) "aic =", aic
! WRITE (nout,*) " "
! WRITE (nout,*) "Size of w:", nobsw
! WRITE (nout,*) "i z(i,1) w(i)"
! DO i=1,nobs
! WRITE (nout,*) i, z(i,1), w(i)
! END DO
IF (ALLOCATED(w)) DEALLOCATE(w)
END PROGRAM
Figure 8-1-Differenced Series
PHONE: 713.784.3131 FAX:713.781.9260 |