SWEP
Estimations of the nonnormalized spectral density of a stationary time series based on specified periodogram weights given the periodogram.
Required Arguments
N — Number of observations in the appropriately centered and padded time series X. (Input)
N must be greater than or equal to two.
PX — Vector of length ⌊N/2⌋ + 1 containing the (modified) periodogram of X. (Input)
The periodogram ordinate evaluated at (angular) frequency ωk = 2πk/N is given by
PX(k + 1), k = 0, 1, …, ⌊N/2⌋.
F — Vector of length NF containing the (angular) frequencies at which the spectral density is estimated. (Input)
WT — Vector of length NWT containing the weights used to smooth the periodogram. (Input)
The actual weights are the values in WT normalized to sum to 1 with the current periodogram ordinate taking the middle weight for NWT odd or the weight to the right of the middle for NWT even.
SX — Vector of length NF containing the estimate of the spectral density of the time series X. (Output)
Optional Arguments
NF — Number of (angular) frequencies. (Input)
NF must be greater than or equal to one.
Default: NF = size (F,1).
NWT — Number of weights. (Input)
NWT must be greater than or equal to one.
Default: NWT = size (WT,1).
FORTRAN 90 Interface
Generic: CALL SWEP (N, PX, F, WT, SX [, …])
Specific: The specific interface names are S_SWEP and D_SWEP.
FORTRAN 77 Interface
Single: CALL SWEP (N, PX, NF, F, NWT, WT, SX)
Double: The double precision name is DSWEP.
Description
Routine SWEP estimates the nonnormalized spectral density function of a stationary time series using a fixed sequence of weights given the modified periodogram of the appropriately centered and padded data
The routine PFFT may be used to obtain the modified periodogram
over the discrete set of nonnegative frequencies
(Here, ⌊a⌋ means the greatest integer less than or equal to a.) The symmetry of the periodogram is used to recover the ordinates at negative frequencies.
Consider the sequence of m = NWT weights {wj} for j = ‑⌊m/2⌋, …, (m ‑⌊m/2⌋ ‑1) where Σjwj = 1. These weights are fixed in the sense that they do not depend on the frequency ω at which to estimate the nonnormalized spectral density hX(ω). The estimate of the nonnormalized spectral density is computed according to
where
and k(ω) is the integer such that ωk,0 is closest to ω. The weights specified by argument WT may be relative since they are normalized to sum to one in the actual computation of
Usually, m is odd with the weights symmetric about the middle weight w0. If m is even, the weight to the right of the middle is considered w0. Note that periodogram ordinate
is replaced by
and the sum reflects at each end.
The nonnormalized spectral density estimate is computed over the set of frequencies
ω = ƒi, i = 1, …, nƒ
where nƒ = NF. These frequencies are in the scale of radians per unit time. The time sampling interval Δt is assumed to be equal to one.
Approximate confidence intervals for h(ω) can be computed using formulas given in the introduction.
Comments
1. The periodogram of X may be computed using the routine PFFT. Estimation of the spectral density of X using the modified periodogram preserves the scale of the spectral density up to adjustment for the time sampling interval.
2 The time sampling interval, TINT, is assumed to be equal to one. This assumption is appropriate for discrete parameter processes. The adjustment for continuous parameter processes (TINT > 0) involves multiplication of the frequency vector F by 1/TINT and multiplication of the spectral density estimate by TINT.
3. To convert the frequency scale from radians per unit time to cycles per unit time, multiply F by 1/(2π).
Example
Consider the Wölfer Sunspot Data (Anderson 1971, page 660) consisting of the number of sunspots observed each year from 1749 through 1924. The data set for this example consists of the number of sunspots observed from 1770 through 1869. Application of routine SWEP to these data produces the following results:
USE IMSL_LIBRARIES
IMPLICIT NONE
INTEGER LDPM, LDRDAT, N, NDRDAT, NF, NOBS, NPAD, NWT
PARAMETER (LDRDAT=176, NDRDAT=2, NF=20, NOBS=100, NWT=7, &
NPAD=NOBS-1, LDPM=(NOBS+NPAD)/2+1, N=NOBS+NPAD)
!
INTEGER I, IFSCAL, IPVER, NROW, NVAR
REAL F(NF), PI, PM(LDPM,5), RDATA(LDRDAT,NDRDAT), &
FLOAT, SM(NF,2), SX(NF), WT(NWT), X(NOBS)
CHARACTER CLABEL(3)*30, FMT*20, RLABEL(1)*4, TITLE*28
INTRINSIC FLOAT
!
EQUIVALENCE (X(1), RDATA(22,2))
!
DATA WT/1., 2., 3., 4., 3., 2., 1./
DATA IPVER/1/, IFSCAL/0/
DATA FMT/'(F9.4)'/
DATA CLABEL/' ', '%/Frequency', 'Spectral%/Estimates'/
DATA RLABEL/'NONE'/
DATA TITLE/'Results of Spectral Analysis'/
! Initialization
PI = 2.0*ASIN(1.0)
DO 10 I=1, NF
F(I) = PI*FLOAT(I)/FLOAT(NF)
10 CONTINUE
! Wolfer Sunspot Data for years
! 1770 through 1869
CALL GDATA (2, RDATA, NROW, NVAR)
! Compute modified periodogram
CALL PFFT (X, PM, IPVER=IPVER)
!
! Compute spectral density
CALL SWEP (N, PM(:,3), F, WT, SX)
!
! Print results
!
! Copy the frequencies to the output
! matrix
CALL SCOPY (NF, F, 1, SM(1:,1), 1)
! Copy the spectral estimates to the
! output matrix
CALL SCOPY (NF, SX, 1, SM(1:,2), 1)
! Call printing routine
CALL WRRRL (TITLE, SM, RLABEL, CLABEL, FMT=FMT)
!
END
Output
Results of Spectral Analysis
Spectral
Frequency Estimates
0.1571 710.8386
0.3142 116.3940
0.4712 937.1508
0.6283 1209.8268
0.7854 538.9236
0.9425 84.9561
1.0996 128.0791
1.2566 55.0304
1.4137 40.2022
1.5708 46.4240
1.7279 21.0053
1.8850 12.1449
2.0420 8.8654
2.1991 7.2589
2.3562 6.8078
2.5133 3.3873
2.6704 3.9504
2.8274 5.7418
2.9845 4.4652
3.1416 4.1216