DENTON—proportional Denton method

Use this forum to post complete RATS "procedures". Please be sure to include instructions on using the procedure and detailed references where applicable.
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

DENTON—proportional Denton method

Unread post by TomDoan »

This is a procedure for implementing the proportional Denton method of distributing a series. Although it's designed mainly to work with a pair of series where the high frequency series is a noisier but more frequently observed measure of the lower frequency one, it might produce better results than (say) a standard linear Chow-Lin if the series that you're distributing has an exponential trend.

This is based upon the posted DENTON.PRG example, but has been converted to a procedure.

Note that the newer @DISAGGREGATE procedure can do this as a special case.

Code: Select all

*
* @denton  oldseries start end newseries
* # related series (just one)
*
* This implements the proportional Denton method of benchmarking, distributing the
* sum from a low frequency series based upon the period-to-period rates of change
* of a (single) higher frequency series. This is designed to be used when the two
* series are closely related, with the more frequent series being a noisier
* measure of the less frequent one.
*
* Reference: Quarterly National Accounts Manual—Concepts, Data Sources, and
* Compilation, by Bloem, Dippelsman, and Maehle, chapter 6.
* http://www.imf.org/external/pubs/ft/qna/2000/textbook/
*
* Parameters:
*
* oldser = series to distribute. This should be set up in the higher frequency. If
*          you read the series from a RATS format file in the higher frequency, it
*          will be set up this way automatically.
*
* start end  = range over which to do the calculation. By default, the defined
*          range of <<oldser>>
*
* newser = generated higher frequency series. Note that, if you want the output to
*          be at annual rates, you'll have to scale this up at the end because @denton
*          distributes the sum across the sum periods.
*
* Options:
*
* FACTOR=Increase in the recording frequency (3 for quarterly to monthly, 4 for
*        quarterly to annual)
*
* Revision schedule:
*   03/2002 Written as an example program by Tom Doan, Estima
*   02/2008 Revised into a procedure. Switched to use of exact initial Kalman smoother
*
* Requirement:
*   Version 7.00 or later of RATS
*
procedure denton oldser start end newser
type series oldser *newser
type integer start end
*
option integer factor 3
*
local frml[vect]   cf
local vect         cx
local symm         sw
local integer      startl endl
local integer      i j n
local series       related y
local equation     xvar
local series[vect] states
local rect         a
*
* Get the one related series. If the user provides more than one, exit with an
* error.
*
equation xvar *
compute n=%eqnsize(xvar)
if n<>1 {
   disp "####@Denton requires only single related series"
   return
}
*
* Get the range from <<oldser>> and normalize so it begins at a first subperiod.
*
inquire(series=oldser) startl<<start endl<<end
if %clock(startl,factor)<>1
   compute startl=startl-%clock(startl,factor)+1
*
* Extract the related series
*
set related startl endl = %eqnxvector(xvar,t)(1)
*
* This is estimated using Kalman smoothing. The states are defined to be the ratio
* between the benchmark estimates of the higher frequency data and the observed
* quarterly data. The measurement equation says that the benchmark estimates sum
* to the low frequency number with no error.
*
* The states evolve according to a random walk. This has to be augmented by
* <<factor>>-1 lags in order to apply the adding-up measurement equation.
*
dim a(factor,factor)
ewise a(i,j)=(i==1.and.j==1.or.i==j+1)
compute sw=%outerxx(%unitv(factor,1))
*
dim cx(factor)
frml cf = %do(i,1,factor,cx(i)=related(t-(i-1))),cx
*
* Patch over the <<oldser>> so we only have a measurement equation for the final
* subperiod.
*
set y startl endl = %if(%clock(t,factor)==factor,oldser,%na)
*
* Smooth using exact initial smoothing
*
dlm(type=smoothed,c=cf,y=y,sw=sw,a=a,exact,presample=ergodic) startl endl states
*
* The interpolated data are obtained by multiplying the higher frequency
* observables by the Kalman smoothed states.
*
set newser startl endl = states(t)(1)*related
end
hardmann
Posts: 252
Joined: Sat Feb 26, 2011 9:49 pm

Re: DENTON—proportional Denton method

Unread post by hardmann »

Dear Tom:
For benchmarking , how to compare the proportional denton and alternative method, if we get two adjusted series with unadjusted origin one. Alternative method maybe is Cholette-Dagum method or proportional denton using GLS.

Best Regard
Hardman
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: DENTON—proportional Denton method

Unread post by TomDoan »

hardmann wrote:Dear Tom:
For benchmarking , how to compare the proportional denton and alternative method, if we get two adjusted series with unadjusted origin one. Alternative method maybe is Cholette-Dagum method or proportional denton using GLS.

Best Regard
Hardman
I'm not sure there is any good way to do that. I would hope there isn't THAT much of a difference---the adding up constraint usually severely limits what kind of behavior the distributed series can display.
Post Reply