CPFFT
Computes the cross periodogram of two stationary time series using a fast Fourier transform.
Required Arguments
X — Vector of length NOBS containing the first stationary time series. (Input)
Y — Vector of length NOBS containing the second stationary time series. (Input)
CPM — (⌊N/2⌋ + 1) by 10 matrix containing a summarization of the results of the cross periodogram analysis. (Output)
For k = 0, 1, …, ⌊N/2⌋, the (k + 1)-st element of the j‑th column of CPM is defined as
Col. |
Description |
1 |
Frequency, ωk where ωk = 2πk/N for IFSCAL = 0 or ωk = k/N for IFSCAL = 1. |
2 |
Period, pk where pk = 2π/ ωk for IFSCAL = 0 and pk = 1/ ωk for IFSCAL = 1. If ωk = 0, pk is set to missing. |
3 |
X periodogram ordinate, IX(ωk) |
4 |
X cosine transformation coefficient, AX(ωk) |
5 |
X sine transformation coefficient, BX(ωk) |
6 |
Y periodogram ordinate, IY(ωk) |
7 |
Y cosine transformation coefficient, AY(ωk) |
8 |
Y sine transformation coefficient, BY(ωk) |
9 |
Real part of the XY cross periodogram ordinate IXY(ωk). |
10 |
Imaginary part of the XY cross periodogram ordinate IXY(ωk). |
Optional Arguments
NOBS — Number of observations in each stationary time series X and Y. (Input)
NOBS must be greater than or equal to two.
Default: NOBS = size (X,1).
IPRINT — Printing option. (Input)
Default: IPRINT = 0.
IPRINT |
Action |
0 |
No printing is performed. |
1 |
Prints the periodogram, cosine and sine series, and the real and imaginary components of the cross periodogram. |
XCNTR — Constant used to center the time series X. (Input)
Default: XCNTR = the arithmetic mean.
YCNTR — Constant used to center the time series Y. (Input)
Default: YCNTR = the arithmetic mean.
NPAD — Number of zeroes used to pad each centered time series. (Input)
NPAD must be greater than or equal to zero. The length of each centered and padded time series is N = NOBS + NPAD.
Default: NPAD = NOBS – 1.
IFSCAL — Option for frequency scale. (Input)
Default: IFSCAL= 0.
IFSCAL |
Action |
0 |
Frequency in radians per unit time |
1 |
Frequency in cycles per unit time |
IPVER — Option for version of the periodogram. (Input)
Default: IPVER = 0.
IPVER |
Action |
0 |
Compute usual periodogram. |
1 |
Compute modified periodogram. |
Refer to the “Description” section for further details.
LDCPM — Leading dimension of CPM exactly as specified in the dimension statement of the calling program. (Input)
LDCPM must be greater than or equal to ⌊N/2⌋ + 1.
Default: LDCPM = size (CPM,1).
FORTRAN 90 Interface
Generic: CALL CPFFT (X, Y, CPM [, …])
Specific: The specific interface names are S_CPFFT and D_CPFFT.
FORTRAN 77 Interface
Single: CALL CPFFT (NOBS, X, Y, IPRINT, XCNTR, YCNTR, NPAD, IFSCAL, IPVER, CPM, LDCPM)
Double: The double precision name is DCPFFT.
Description
Routine CPFFT computes the cross periodogram of two jointly stationary time series given a sample of n = NOBS observations {Xt} and {Yt} for t = 1, 2, …, n.
Let
represent the centered and padded data where N = NOBS + NPAD,
and
is determined by
Similarly, let
represent the centered and padded data where
and
is determined by
The periodogram of the sample sequence {Xt}, t = 1, …, n computed with the padded sequence
is defined by
where
and
represent the
cosine and sine transforms, respectively, and K is the scale factor
The periodogram of the sample sequence {Yt}, t = 1, …, n computed with the padded sequence
is defined by
where
and
represent the
cosine and sine transforms, respectively. Since the periodogram is an even function of the frequency, it is sufficient to estimate the periodogram at the discrete set of nonnegative frequencies
(Here, ⌊a⌋ means the greatest integer less than or equal to a). The routine PFFT is used to compute the periodograms of both
according to the version specified by the argument IPVER. The computational formula for the cross periodogram is given by
where
and
The real part of the (modified) cross periodogram represents the ’raw’ sample cospectrum and the negative of the imaginary part of the (modified) cross periodogram represents the ‘raw’ sample quadrature spectrum (Priestley 1981, page 695). The relationship between the cross periodogram and its complex conjugate is given by
and may be used to recover the cross periodogram at negative frequencies.
Comments
1. Workspace may be explicitly provided, if desired, by use of C2FFT/DC2FFT. The reference is:
CALL C2FFT (NOBS, X, Y, IPRINT, XCNTR, YCNTR, NPAD, IFSCAL, IPVER, CPM, LDCPM, CX, COEF, WFFTC, CPY)
The additional arguments are as follows:
CX — Complex work vector of length N.
COEF — Complex work vector of length N.
WFFTC — Work vector of length 4N + 15.
CPY — Work vector of length 2N.
2. The centered and padded time series are defined by
I |
AOV(I) |
CX(j) = X(j) ‑ XCNTR |
for j = 1, …, NOBS |
CX(j) = 0 |
for j = NOBS + 1, …, N |
and |
|
CY(j) = Y(j) ‑ YCNTR |
for j = 1, …, NOBS |
CY (j) = 0 |
for j = NOBS + 1, …, N where N = NOBS + NPAD. |
3. The cross periodogram IXY(ω) is complex valued in general. The relation
IXY(‑ω) = conj(IXY(ω)) for w > 0.0 recovers the cross periodogram for negative frequencies since real(IXY(‑ω)) = real(IXY(ω)) and imag(IXY(‑ω)) = ‑imag(IXY(ω)). The periodogram I(ω) is an even function of the frequency ω. The relation I(‑ω) = I(ω) for ω > 0.0 recovers the periodogram for negative frequencies.
4. Since cos(ω) is an even function of ω and sin(ω) is an odd function of ω, the cosine and sine transformations, respectively, satisfy A(‑ω) = A(ω) and B(‑ω) = ‑B(ω) for ω > 0.0. Similarly, the complex Fourier coefficients, stored in COEF, satisfy COEF(‑ω) = conj(COEF(ω)).
5. Computation of the 2 * NOBS ‑ 1 cross‑covariances of X and Y using the inverse Fourier transform of the cross periodogram requires NPAD = NOBS ‑ 1.
Example
Consider the Robinson Multichannel Time Series Data (Robinson 1967, page 204) where X is the Wölfer sunspot number and Y is the northern light activity for the time period from 1770 through 1869. Application of routine CPFFT to these data produces the following results. Note that CPFFT sets CPM (1, 2) to the missing value code via routine AMACH.The printing of CPM (1, 2) depends on the computer.
USE GDATA_INT
USE CPFFT_INT
USE WRRRL_INT
IMPLICIT NONE
INTEGER LDCPM, LDRDAT, NDRDAT, NOBS, NPAD
PARAMETER (LDRDAT=100, NDRDAT=4, NOBS=100, NPAD=NOBS-1, &
LDCPM=(NOBS+NPAD)/2+1)
!
INTEGER IPVER, NRCOL, NRROW
REAL CPM(LDCPM,10), FLOAT, RDATA(LDRDAT,NDRDAT), &
X(NOBS), Y(NOBS)
CHARACTER CLABEL1(6)*9, CLABEL2(6)*9, FMT*7, RLABEL(1)*6, &
TITLE*41
INTRINSIC FLOAT
!
EQUIVALENCE (X(1), RDATA(1,2)), (Y(1), RDATA(1,3))
!
DATA TITLE/'Results of the Cross Periodogram Analysis'/
DATA FMT/'(F10.3)'/
DATA CLABEL1/'k+1', 'w(k)', 'p(k)', 'IX(w(k))', 'AX(w(k))', &
'BX(w(k))'/
DATA CLABEL2/'k+1', 'IY(w(k))', 'AY(w(k))', 'BY(w(k))', &
'Real IXY', 'Imag. IXY'/
DATA RLABEL/'NUMBER'/
!
! Robinson Data
CALL GDATA (8, RDATA, NRROW, NRCOL)
! Center on arithmetic means
! Frequency in radians per unit time
! Modified periodogram version
IPVER = 1
! Compute the cross periodogram
CALL CPFFT (X, Y, CPM, IPVER=IPVER)
!
! Print results (First 10 rows)
CALL WRRRL (TITLE, CPM, RLABEL, CLABEL1, 10, 5, FMT=FMT)
CALL WRRRL ('%/', CPM(1:,6), RLABEL, CLABEL2, 10, 5, FMT=FMT)
!
END
Output
Results of the Cross Periodogram Analysis
k+1 w(k) p(k) IX(w(k)) AX(w(k)) BX(w(k))
1 0.000 NaN 0.000 0.000 0.000
2 0.032 199.000 184.159 3.742 -13.044
3 0.063 99.500 1364.408 35.457 -10.354
4 0.095 66.333 2433.933 29.411 39.610
5 0.126 49.750 1351.002 -21.749 29.631
6 0.158 39.800 140.421 -11.716 -1.773
7 0.189 33.167 44.117 -4.671 4.722
8 0.221 28.429 121.186 -11.003 -0.343
9 0.253 24.875 176.275 -4.782 -12.386
10 0.284 22.111 144.867 10.038 -6.642
k+1 IY(w(k)) AY(w(k)) BY(w(k)) Real IXY Imag. IXY
1 0.000 0.000 0.000 0.000 0.000
2 1689.212 -37.480 -16.866 79.776 -552.014
3 4113.003 41.232 -49.122 1970.577 -1314.779
4 3255.785 44.214 36.068 2729.031 -690.474
5 1757.663 -8.162 41.122 1396.006 -652.513
6 1002.050 -30.107 9.778 335.410 -167.954
7 62.360 -6.825 3.972 50.636 13.678
8 1481.396 -38.096 5.487 417.288 -73.451
9 1274.161 -17.176 -31.291 469.704 -63.095
10 488.479 -12.442 -18.267 -3.570 -265.992