Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: Multi-step forecasts

From   Perron Benoît <>
To   <>
Subject   st: Multi-step forecasts
Date   Sun, 21 Mar 2010 20:26:49 -0400

Dear all,


I would like to compute multi-step forecasts and forecast errors in a pseudo-out of sample experiment to valuate forecast accuracy (for example by running a Diebold-Mariano (1995) test with dmariano from ssc).  For example, I have quarterly data of a variable called lstarts and I want to compare forecast accuracy 1 year ahead (so forecast horizon is 4 periods).  The Where I am having problems is in generating these forecasts. Has anyone done this before?  


In case no one has done this, here is what I have tried.   Inside a loop that determines the window of the estimation sample (from 1 to 101, then 1 to 102, etc.) , after the ARMA command, one has to use the predict command with the dynamic option.  The program should look something like:


forvalues p = 101(1)172 {



* ARMA(1,4)


arima lstarts in 1/`p' ,  ar(1) ma(1/4) 


* forecasts


drop yhat4c


predict yhat4c, dynamic(`p'+1)





I now need a way to keep the value of the forecast for period p+4.  One way I found is to transform the forecast series into a matrix and pick the right element, and when the loop is done, convert the matrix thus obtained back to a series, for example, by including inside the above loop: 


mkmat yhat4c, matrix(fore)


mat fore4c[`p'+4,1] = el(fore,`p'+4,1)


and the convert to a series by 


 svmat fore4c, names(fore4c1)



Stata accepts all this, but somehow, this does not give me the appropriate results.  One way of checking this is by looking at one-step ahead.  I get different forecasts with this approach than using the predict option without the dynamic option.  This gives me a set of one-step ahead forecasts that are quite different from those I get with this approach.


I am sure that there must be much more straightforward way of doing this.  Or maybe someone can figure out where things go wrong?


Thanks for any help,



*   For searches and help try:

© Copyright 1996–2016 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index