BAY_SEA
Bayesian seasonal adjustment modeling. The model allows for a decomposition of a time series into trend, seasonal, and an error component.
Required Arguments
W — Vector containing the stationary time series. (Input)
Optional Arguments
IORDER — Order of trend differencing. (Input)
Default: IORDER = 2.
ISORDER — Order of seasonal differencing. (Input)
Default: ISORDER = 1.
NFOCAST — Number of forecasted values. (Input)
Default: NFOCAST = 0.
NPERIOD — Number of seasonals within a period. (Input)
Default: NPERIOD = 12.
RIGID — Controls rigidity of the seasonal pattern. (Input)
Default: RIGID = 1.0.
LOGT — Model option. (Input)
LOGT
Model
0
Non‑additive model
1
Log additive model
Default: LOGT = 0.
IPRINT — Printing option. (Input)
IPRINT
Action
0
No printing
1
Prints final results only
2
Prints intermediate and final results
Default: IPRINT = 0.
ABIC — The Akaike Bayesian Information Criterion for the estimated model. (Output)
TREND — Vector of length size(W)+ NFOCAST containing the estimated trend component for each data value followed by the trend estimates for the NFOCAST forecasted values. (Output)
SEASONAL — Vector of length size(W)+ NFOCAST containing the estimated seasonal components for each data value followed by the estimates for the NFOCAST forecasted seasonal values. (Output)
COMP — Vector of length size(W)containing the estimated irregular components. (Output)
SMOOTHED — Vector of length size(W)+ NFOCAST containing the estimated smoothed estimates for each of the time series values followed by the NFOCAST forecast values. (Output)
FORTRAN 90 Interface
Generic: CALL BAY_SEA (W [])
Specific: The specific interface names are S_BAY_SEA and D_BAY_SEA.
Description
Routine BAY_SEA is based upon the algorithm published by Akaike (1980). This algorithm uses a Bayesian approach to the problem of fitting the following autoregressive model for a time series Wt decomposed into a trend and a seasonal component.
Adopting the notation described earlier in the Usage Notes section of this chapter, if
then a seasonal autoregressive model can be represented by the following relationship:
where Wt is the stationary time series with mean μTt denotes an underlying trend, St seasonal component and At a noise or irregular component.
A non‑Bayesian approach to this problem would be to estimate the trend and seasonal components by minimizing
where p is the period of the seasonal component, and d, r, and z are properly chosen constants.
In BAY_SEA, the approach is to select the parameter d, which controls the smoothness of the trend and seasonality estimates, using Bayesian methods. The prior distribution controls the smoothness of the trend and seasonal components by assuming low order Gaussian autoregressive models for some differences of these components. The choice of the variance of the Gaussian distribution is realized by maximizing the log likelihood of the Bayesian model.
The other smoothing parameters, r and z, are determined by the value of RIGID. The default value for RIGID is 1. Larger values of RIGID produce a more rigid seasonal pattern. Normally, a series is first fit using the default value for RIGID. The smoothness of the trend and seasonality estimates are examined and then RIGID is either increased or decreased depending upon whether more or less seasonal smoothing is needed.
Additionally, BAY_SEA selects the optimum autoregressive model as the model that minimizes ABIC.
ABIC = 2ln(likelihood) ,
where the likelihood in this case is the mixed Bayesian maximum likelihood. Smaller values of ABIC represent a better fit.
Example
This example uses unadjusted unemployment for women over 20 years of age in the U.S. for 1991‑2001, as reported by the U.S. Bureau of Labor Statistics (www.bls.gov). Figure 18 displays this data together with the smoothed preditions from BAY_SEA. Figure 19 displays the same data with trend predictions from BAY_SEA.
 
use bay_sea_int
use wrrrl_int
 
IMPLICIT NONE
! SPECIFICATIONS FOR PARAMETERS
integer, parameter :: focast=12, nobs=132, nyears=11
real(kind(1e0)) :: b(nobs)
! U.S. Labor Statistics
! unemployment for women
! over 20 years of age
data b/ 2968D0,3009D0,2962D0,2774D0,3040D0,3165D0,& !1991
3104D0,3313D0,3178D0,3142D0,3129D0,3107D0,&
3397D0,3447D0,3328D0,3229D0,3286D0,3577D0,& !1992
3799D0,3867D0,3655D0,3360D0,3310D0,3369D0,&
3643D0,3419D0,3108D0,3118D0,3146D0,3385D0,& !1993
3458D0,3468D0,3330D0,3244D0,3135D0,3005D0,&
3462D0,3272D0,3275D0,2938D0,2894D0,3106D0,& !1994
3150D0,3289D0,3136D0,2829D0,2776D0,2467D0,&
2944D0,2787D0,2749D0,2762D0,2578D0,2900D0,& !1995
3100D0,3102D0,2934D0,2864D0,2652D0,2456D0,&
3088D0,2774D0,2701D0,2555D0,2677D0,2741D0,& !1996
3052D0,2966D0,2772D0,2723D0,2705D0,2640D0,&
2898D0,2788D0,2718D0,2406D0,2520D0,2645D0,& !1997
2708D0,2811D0,2666D0,2380D0,2292D0,2187D0,&
2750D0,2595D0,2554D0,2213D0,2218D0,2449D0,& !1998
2532D0,2639D0,2449D0,2326D0,2302D0,2065D0,&
2447D0,2398D0,2381D0,2250D0,2086D0,2397D0,& !1999
2573D0,2475D0,2299D0,2054D0,2127D0,1935D0,&
2425D0,2245D0,2298D0,2005D0,2208D0,2379D0,& !2000
2459D0,2539D0,2182D0,1959D0,2012D0,1834D0,&
2404D0,2329D0,2285D0,2175D0,2245D0,2492D0,& !2001
2636D0,2892D0,2784D0,2771D0,2878D0,2856D0/
 
integer :: i
real(kind(1e0)) :: abicm
real(kind(1e0)) :: trend(nobs+focast), season(nobs+focast)
real(kind(1e0)) :: irreg(nobs), smooth(nobs+focast)
character :: months(focast)*3, years(nyears+2)*4
data months/'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', &
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'/
data years/' ', '1991', '1992', '1993', '1994', '1995', &
'1996', '1997','1998','1999','2000','2001','2002'/
 
call bay_sea(b, trend=trend, seasonal=season, &
comp=irreg, abic=abicm, iorder=2, isorder=1,&
nfocast=focast, smoothed=smooth)
 
write(*,*) 'ABIC = ', abicm
call wrrrl('TREND with last 12 values forecasted',trend,months, &
years, nra=12,nca=nyears+1,lda=12)
 
call wrrrl('SEASONAL with last 12 values forecasted',season,&
months,years, nra=12,nca=nyears+1, lda=12)
call wrrrl('IRREGULAR=Original data-TREND-SEASONAL',irreg, &
months,years, nra=12,nca=nyears,lda=12)
 
end
Output
 
ABIC = 1297.6403
 
TREND with last 12 values forecasted
1991 1992 1993 1994 1995 1996 1997 1998
Jan 2879.8 3318.9 3422.6 3228.7 2827.3 2795.7 2743.1 2481.3
Feb 2918.2 3359.9 3387.8 3206.0 2815.8 2785.6 2720.6 2469.7
Mar 2955.1 3399.1 3355.5 3177.0 2812.4 2777.9 2694.2 2455.4
Apr 2990.0 3436.1 3329.5 3142.1 2814.7 2773.2 2665.2 2439.0
May 3022.7 3469.0 3309.6 3103.9 2819.3 2771.3 2636.0 2422.8
Jun 3052.8 3496.1 3294.8 3064.8 2825.5 2771.0 2607.4 2408.5
Jul 3082.8 3514.5 3283.8 3025.7 2830.9 2772.4 2580.8 2396.8
Aug 3116.2 3521.9 3276.0 2987.3 2833.2 2773.6 2557.2 2387.7
Sep 3153.4 3517.8 3270.3 2949.0 2831.7 2774.7 2536.3 2380.3
Oct 3193.8 3503.7 3264.8 2911.3 2826.1 2774.5 2518.0 2373.6
Nov 3235.6 3482.4 3256.8 2876.6 2816.6 2770.4 2503.0 2366.6
Dec 3277.6 3455.2 3245.3 2847.6 2805.9 2760.2 2491.5 2359.1
 
1999 2000 2001 2002
Jan 2352.1 2235.9 2206.0 3166.1
Feb 2345.6 2237.6 2239.0 3275.1
Mar 2338.1 2239.3 2281.4 3384.1
Apr 2328.3 2238.9 2333.1 3493.0
May 2315.5 2235.2 2393.9 3602.0
Jun 2301.4 2226.3 2464.7 3710.9
Jul 2286.0 2212.8 2545.7 3819.9
Aug 2269.8 2196.6 2636.7 3928.9
Sep 2255.5 2181.3 2735.7 4037.8
Oct 2244.6 2171.9 2840.4 4146.8
Nov 2238.3 2172.1 2948.2 4255.8
Dec 2235.6 2183.3 3057.2 4364.7
 
SEASONAL with last 12 values forecasted
1991 1992 1993 1994 1995 1996 1997 1998 1999
Jan 162.9 165.6 169.3 172.0 173.8 176.3 176.4 177.3 176.4
Feb 51.4 51.5 50.5 49.5 48.6 48.8 50.0 51.1 51.0
Mar -24.0 -23.9 -23.4 -18.8 -16.3 -13.0 -8.7 -4.9 -3.0
Apr -191.0 -190.1 -189.1 -188.0 -186.6 -187.8 -188.5 -187.9 -186.6
May -140.6 -143.3 -145.4 -147.4 -148.1 -147.1 -147.1 -147.9 -147.7
Jun 67.2 66.6 65.8 64.4 63.3 62.2 62.7 63.6 64.9
Jul 176.9 180.1 181.6 183.0 185.5 186.6 185.8 186.1 187.2
Aug 251.9 253.0 252.6 253.3 253.1 252.8 253.7 254.4 255.2
Sep 76.4 77.2 77.1 77.3 75.5 73.3 72.6 70.7 68.9
Oct -79.5 -80.5 -80.1 -80.8 -81.5 -84.3 -87.6 -90.1 -93.4
Nov -119.8 -120.7 -120.5 -120.2 -120.4 -119.7 -119.7 -118.1 -117.6
Dec -235.7 -237.9 -243.0 -247.9 -250.5 -251.2 -254.2 -256.2 -257.5
 
2000 2001 2002
Jan 177.2 177.6 177.5
Feb 50.8 51.6 51.5
Mar -1.9 -1.7 -1.8
Apr -187.2 -186.5 -186.6
May -145.7 -145.6 -145.7
Jun 65.6 65.1 65.0
Jul 186.4 184.7 184.7
Aug 256.8 256.9 256.9
Sep 67.3 67.0 67.0
Oct -95.1 -94.6 -94.6
Nov -117.3 -116.6 -116.6
Dec -258.1 -257.1 -257.1
 
IRREGULAR=Original data-TREND-SEASONAL
1991 1992 1993 1994 1995 1996 1997 1998 1999
Jan -74.7 -87.5 51.1 61.2 -57.1 116.0 -21.5 91.4 -81.5
Feb 39.4 35.6 -19.3 16.5 -77.4 -60.4 17.3 74.2 1.5
Mar 30.9 -47.2 -224.1 116.8 -47.1 -63.9 32.5 103.5 45.9
Apr -25.0 -17.0 -22.5 -16.1 133.9 -30.5 -70.6 -38.0 108.3
May 157.8 -39.7 -18.2 -62.6 -93.1 52.8 31.2 -56.9 -81.9
Jun 45.0 14.3 24.4 -23.1 11.2 -92.1 -25.1 -23.2 30.7
Jul -155.6 104.4 -7.4 -58.6 83.6 93.0 -58.6 -50.9 99.9
Aug -55.0 92.1 -60.6 48.4 15.7 -60.4 0.1 -3.1 -49.9
Sep -51.8 60.0 -17.4 109.6 26.8 -76.0 57.1 -2.1 -25.3
Oct 27.7 -63.3 59.3 -1.5 119.4 32.8 -50.3 42.5 -97.1
Nov 13.2 -51.7 -1.3 19.5 -44.3 54.3 -91.3 53.5 6.3
Dec 65.1 151.7 2.7 -132.8 -99.4 131.0 -50.3 -37.9 -43.1
 
2000 2001
Jan 11.9 20.4
Feb -43.5 38.4
Mar 60.5 5.3
Apr -46.7 28.5
May 118.5 -3.3
Jun 87.1 -37.7
Jul 59.9 -94.4
Aug 85.6 -1.6
Sep -66.6 -18.7
Oct -117.8 25.3
Nov -42.7 46.4
Dec -91.2 56.0
Figure 18, Sample Smoothed Predictions from BAY_SEA
Figure 19, Sample Trend Predictions from BAY_SEA
Published date: 03/19/2020
Last modified date: 03/19/2020