Examples / FREQDESEASON.RPF |
FREQDEASON.RPF demonstrates frequency domain deseasonalization.
Full Program
open data oecdsample.rat
calendar(m) 1960
*
* Data are Canadian retail sales
*
data(format=rats) 1960:1 2007:3 canrett canretts
*
* Transform to logs and take the trend out
*
set logret = log(canrett)
filter(type=hp) logret / removed
set prepped = logret-removed
*
compute nords=2*%freqsize(2007:3)
frequency 2 nords
*
rtoc
# prepped
# 1
fft 1
*
* Create bands of width pi/16. Leave the low frequencies in.
*
cmask 2 / (nords/12) (nords/32) (nords/12)+1
cmult 1 2
ift 1
*
* Send the deseasonalized data back, add back the removed trend and
* exponentiate.
*
ctor 1960:1 %allocend()
# 1
# deseason
*
set deseason = exp(deseason+removed)
*
* Graphs the deseasonalized series with the "officially" adjusted series.
*
graph(footer="Frequency Domain Deseasonalization",key=upleft,$
klabels=||"SA-Official","SA-Frequency Domain"||) 2
# canretts 2000:1 *
# deseason 2000:1 *
Graph
Copyright © 2025 Thomas A. Doan