*$Header: /home/etpdihei/cvs/surgat/surgat.src,v 1.10 2003/03/05 18:16:54 etpdihei Exp $
cntrl(interactive)
*************************************************************************************
****                         SURGAT.SRC
****    SURGAT (Seasonal Unit Roots Graphical Analysis and Testing device)
****
****                This program is originally written by
****     Ignacio Díaz-Emparanza with the collaboration of Rosa Cao and Lander Ibarra
****  If you have any ideas or discover serious bugs please contact
****                     Ignacio Díaz-Emparanza
****                       etpdihei@bs.ehu.es
****               Departamento de Economía Aplicada III
****                  (Econometría y Estadística)
****      Universidad del País Vasco - Euskal Herriko Unibertsitatea
****                 Avda del Lehendakari Aguirre, 83
****                    48015 Bilbao (Spain)
****
**** Financial support from research projects UPV-038.321-G55/98 and
**** 9/UPV 00038.321-13503/2001 of the University of the Basque Country and
**** PI-1999/70 of the Basque Government is gratefully acknowledged.
*************************************************************************************
/*
******
* USE:
******

 SURGAT requires procedures SPECTRUM.SRC (by Estima, in the distribution of RATS 5)
 and LAGSELEC.SRC  by Norman Morin, nmorin@frb.gov, April 1998, that you can find in
 http://www.estima.com

    OPTIONS:

       CRIT=AIC/[BIC]/LB/LM/GS/ALL
     With this option you select the criterion, which
     determines the choice of the lag length for the
     tests regressions and for the AR model used to substract the trend and
     the deterministic seasonals. This option is inheritated from the procedure LAGSELECT 
     (in lagselec.src)

*****************
*(From lagselec.src, by Norman Morin):
*
* LAGSELECT determines the optimal lag length for a series using
*     one of or all of five criteria:
*
*     (1) [AIC] AIC model selection criterion
*     (2) [BIC] BIC model selection criterion
*                 (The BIC is also called the Schwarz criterion)
*     (3) [LB]  Ljung-Box test for residual serial correlation
*     (4) [LM]  Lagrange multiplier (LM) test for residual serial correlation
*     (5) [GS]  General-to-simple (GS) reduction test
*     (6) [All] Calculates lag lengths by all five criteria
*
*   (1) and (2) perform regressions from 0 to MAXLAG (maxlag here is aprox T/3) lags and chooses
*       the optimal lag length by the minimum AIC or BIC.
*   (3) and (4) adds lags until the Ljung-Box test (3) or the Lagrange
*       multiplier test (4) fails to reject no serial correlation of
*       order SCLAG at a user defined level (SIGNIF) or until lag = MAXLAG.
*   (5) starts with MAXLAG lags, and if the final lag is significant (at the
*       level SIGNIF), that lag length is chosen; if not, the lag length
*       is continually reduced until either the last included lag is
*       significant or no lags are included.
*
*******************

	NUMSER=[4] Maximum number of series opened by the user from the input file. This is the maximum number
	of series that the program is offering to the user in doing the analysis. This is an esthetical option
	if you have any doubts about this you can put NUMSER=1000 and the program will offer to you all the 
       disposable series	

	TEX/[NOTEX] option for writing the results of the tests codified as LaTeX tables.
	
	SAVE/[NOSAVE] option for saving automatically the graphs in the temporary directory
	c:\tmp

IMPORTANT:
For using SURGAT you must include in your 'allocate' the option "regress" with a value of
at least (nobs/3)+14 for example,

---------------
open(window) tempout 'second window'
change output tempout
cal 1975 1 4
com nobs = 99:3-75:1+1
com re = fix(nobs/3) + 14
all(regress=re) 0 99:3
open data file.dat
data / g

source surgat.src
@surgat(crit=bic)
---------------

**************
* DESCRIPTION:
**************

 This is a menu-driven program to help in the analysis of the seasonal component and the 
trend of a (quarterly, monthly or annual) time series.

 Once the series is selected, a set of simple transformations can be applied:  log, regular difference,
seasonal difference, regular+seasonal difference, the series without its deterministic trend,
without its deterministic seasonal, estimated eficiently in both cases by means of
a deterministic+autoregressive model.

 The procedure offers several graphs of the series and its transformations:

 1- the series, ACF , PACF and spectrum
 2- seasonal filters
 3- seasonal paths (Buys-Ballot plots)
 4- regular paths


 The program also contains a menu for testing unit roots over the series and its
transformations, applying the tests: 

 1- ADF, 
 2- HEGY, 
 3- KPSS, 
 4- Canova-Hansen.

If the procedure is invocated with the option SAVE, all the graphics displayed innthe screen are automatically 
saved in the directory c:\tmp (so, in this case, this directory must be created before).

The codification of the filename of the graphics is the following:

In firts position:

-logarithm:             lxxx
-without logarithm:     oxxx

In second position:

-Without differences:       xoxx
-Regular difference:        xdxx
-Seasonal diff.:            xsxx
-Regular and sesonal diff.: xtxx

In third position:

-Without transformation:                    xxox
-Without deterministic trend:               xxtx
-Without determ. trend and determ.seasonals xxdx

In fourth position:

-Autocorrelations:   xxxa
-Seasonal filters:   xxxf
-Seasonal paths:     xxxe
-Regular paths:      xxxr

EXAMPLE: 

In the file "patolstr.rgf " we will have

- series "pato"
-(l) in logs
-(s) in seasonal difference
-(t) without (linear) deterministic trend
-(r) graphic of the regular path

******************
* END OF DESCRIPTION OF SURGAT.SRC PROCEDURE
******************
*/
**********************
* THE CODE BEGINS HERE  
**********************

* Global variables
environment batch
declare integer fdata ldata tfdata
declare series final trend series
declare integer vd period N savegr orderp nobsar 
declare string etiq nombre pru pru1 header3 header4 header5 header6 header7 header8 header9 header10 hcrit
*
declare vector[string] HEAD(4) HEADI(2) HEADII(3) HEADIII(2)
* Titles of the graphs and tests
compute head(1)='Autocorrelations'
compute head(2)='Filters'
compute head(3)='Seasonal paths'
compute head(4)='Regular paths'
compute headi(1)='ADF'
compute headi(2)='HEGY'
compute headii(1)='ADF'
compute headii(2)='HEGY'
compute headii(3)='KPSS'
compute headiii(1)='HEGY'
compute headiii(2)='Canova-Hansen'
*************************
*************************
* External procedures used
source(noecho) spectrum.src
source(noecho) lagselec.src
*********************
*********************
* Internal procedures

procedure corr cnobs cfinal ctfdata cldata cpru1 cheader3 cheader4 cheader5 cheader6 cheader8
*
option switch save 0
*
type series cfinal
type integer cnobs ctfdata cldata
type string cpru1 cheader3 cheader4 cheader5 cheader6 cheader8
*
ieval savegr = save
*
correlate(noprint,stderrs=stderrs,partial=FACPOUT,number=36) cFINAL ctfdata cldata FACOUT
*
********* Confidence intervals for autocorrelations
set supc = 1.96*stderrs
set infc = -1.96*stderrs
set psup =  1.96*(1/sqrt(nobs))
set pinf = -1.96*(1/sqrt(nobs))
*
com prud = cpru1 + "a.rgf"
if save
{
open plot &prud
spgraph(hfields=2,vfields=2)
graph(header=cHEADER4,subheader=cheader3)
# cFINAL ctfdata cldata
@spectrum(header=cheader8,window=tent,TAPER=cosine) cfinal ctfdata cldata
graph(nodates,style=bar,number=1,header=cHEADER5,subheader=cHEADER3,MAX=1.0,MIN=-1.0,overlay=line,ovcount=2,ovsamescale) 3
# FACOUT 2 37
# supc 2 37
# infc 2 37
graph(nodates,style=bar,number=1,header=cHEADER6,subheader=cHEADER3,MAX=1.0,MIN=-1.0,overlay=line,ovcount=2,ovsamescale) 3
# FACPOUT 2 37
# psup 2 37
# pinf 2 37
spgraph(done)
close plot
}
else
{
spgraph(hfields=2,vfields=2)
graph(header=cHEADER4,subheader=cheader3)
# cFINAL ctfdata cldata
@spectrum(header=cheader8,window=tent,TAPER=cosine) cfinal ctfdata cldata
graph(nodates,style=bar,number=1,header=cHEADER5,subheader=cHEADER3,MAX=1.0,MIN=-1.0,overlay=line,ovcount=2,ovsamescale) 3
# FACOUT 2 37
# supc 2 37
# infc 2 37
graph(nodates,style=bar,number=1,header=cHEADER6,subheader=cHEADER3,MAX=1.0,MIN=-1.0,overlay=line,ovcount=2,ovsamescale) 3
# FACPOUT 2 37
# psup 2 37
# pinf 2 37
spgraph(done)
}
*
end corr
***********
procedure filtros fpru1 fperiod vari1 ftfdata fldata fheader7
*
option switch save 0
*
type string fpru1 fheader7
type integer fperiod ftfdata fldata
type series vari1
*
ieval savegr = save
*
com prud = fpru1 + "f.rgf"
*
if fperiod == 4
{
  **********************     ****************
  *         FILTERING THE SERIES
  **********************        ****************
*(freq. 0)
  filter vari1 ftfdata+3 fldata df1v1
  # 1 2 3
  # 1 1 1
  *******************************************************************
*(freq. pi)
  filter vari1 ftfdata+3 fldata df2v1
  # 1 2 3
  # -1 1 -1
  *******************************************************************
*(frec. (pi/2))
  filter vari1 ftfdata+2 fldata df3v1
  # 2
  # -1
  *******************************************************************
*(Seasonal difference)
  filter vari1 ftfdata+4 fldata df4v1
  # 4
  # -1
  ****************************************************
*
if save
{
grparm(italics) subheader 28
open plot &prud
spgraph(hfields=2,vfields=2)
graph(header=fHEADER7,subheader="Frequency: 0")
# df1v1 ftfdata+3 fldata
graph(header=fHEADER7,subheader="Frequency: pi") 1
# df2v1 ftfdata+3 fldata
graph(header=fHEADER7,subheader="Frequency: pi/2") 1
# df3v1 ftfdata+2 fldata
graph(header=fHEADER7,subheader="Seasonal Difference") 1
# df4v1 ftfdata+4 fldata
spgraph(done)
close plot
grparm(italics) subheader 18
}
else
{
grparm(italics) subheader 28
spgraph(hfields=2,vfields=2)
graph(header=fHEADER7,subheader="Frequency: 0")
# df1v1 ftfdata+3 fldata
graph(header=fHEADER7,subheader="Frequency: pi") 1
# df2v1 ftfdata+3 fldata
graph(header=fHEADER7,subheader="Frequency: pi/2") 1
# df3v1 ftfdata+2 fldata
graph(header=fHEADER7,subheader="Seasonal Difference") 1
# df4v1 ftfdata+4 fldata
spgraph(done)
grparm(italics) subheader 18
}
*
}
if fperiod == 12
{
 **********************     ****************
  *         FILTERING THE SERIES
  **********************        ****************
*(frec. 0)
  filter vari1 ftfdata+11 fldata df1v1
  # 1 2 3 4 5 6 7 8 9 10 11
  # 1 1 1 1 1 1 1 1 1 1 1
  *******************************************************************
*(frec.(pi))
  filter vari1 ftfdata+11 fldata df2v1
  # 0 1 2 3 4 5 6 7 8 9 10 11
  # -1 1 -1 1 -1 1 -1 1 -1 1 -1 1
  *******************************************************************
*(frec.(pi/2))
  filter vari1 ftfdata+11 fldata df3v1
  # 0 1 3 5 7 9 11
  # 0 -1 1 -1 1 -1 1
  *******************************************************************
*(frec.(2Pi/3))
  filter vari1 ftfdata+10 fldata df6v1
  # 0 1 3 4 6 7 9 10
  # .866 -.866 .866 -.866 .866 -.866 .866 -.866
  *******************************************************************
*(frec.(Pi/3))
  filter vari1 ftfdata+11 fldata df7v1
  # 0 1 2 3 4 5 6 7 8 9 10 11
  # .5 -.5 -1 -.5 .5 1 .5 -.5 -1 -.5 .5 1
  *******************************************************************
*(frec.(5Pi/6))
  filter vari1 ftfdata+10 fldata df10v1
  # 0 1 2 3 4 6 7 8 9 10
  # .5 -.866 1 -.866 .5 -.5 .866 -1 .866 -.5
  ***************************************************************
* (frec.(Pi/6))
  filter vari1 ftfdata+11 fldata df11v1
  # 0 1 3 4 5 6 7 9 10 11
  # .866 .5 -.5 -.866 -1 -.866 -.5 .5 .866 1
  *******************************************************************
*(Seasonal difference)
  filter vari1 ftfdata+12 fldata df13v1
  # 0 12
  # 1 -1
  ****************************************************
*
if save
{
grparm(italics) subheader 28
open plot &prud
spgraph(hfields=2,vfields=4)
graph(header=fHEADER7,subheader="Frequency: 0")
# df1v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: pi") 1
# df2v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: pi/2") 1
# df3v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: 2pi/3") 1
# df6v1 tfdata+10 ldata
graph(header=fHEADER7,subheader="Frequency: pi/3") 1
# df7v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: 5pi/6") 1
# df10v1 tfdata+10 ldata
graph(header=fHEADER7,subheader="Frequency: pi/6") 1
# df11v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Seasonal Difference") 1
# df13v1 tfdata+12 ldata
spgraph(done)
close plot
grparm(italics) subheader 18
}
else
{
grparm(italics) subheader 28
spgraph(hfields=2,vfields=4)
graph(header=fHEADER7,subheader="Frequency: 0")
# df1v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: pi") 1
# df2v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: pi/2") 1
# df3v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: 2pi/3") 1
# df6v1 tfdata+10 ldata
graph(header=fHEADER7,subheader="Frequency: pi/3") 1
# df7v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Frequency: 5pi/6") 1
# df10v1 tfdata+10 ldata
graph(header=fHEADER7,subheader="Frequency: pi/6") 1
# df11v1 tfdata+11 ldata
graph(header=fHEADER7,subheader="Seasonal Difference") 1
# df13v1 tfdata+12 ldata
spgraph(done)
grparm(italics) subheader 18
}
}
*
if period==1
{
messagebox(style=alert) 'There is no seasonality in annual data.'
}
end filtros
***********
procedure sesta stfdata speriod sn sfinal sheader9 spru1
*
option switch save 0
*
type integer stfdata speriod sn
type series sfinal
type string sheader9 spru1
*
ieval savegr=save
*
if speriod==1
{
messagebox(style=alert) 'There is no seasonality in annual data.'
}
if speriod==4.or.speriod==12
{
scratch sN 1 speriod base
do  M = 1,sN
     *SET base+M 1 speriod = 0.0
     clear base+M
     SET base+M 1 speriod = %if(stfdata>=speriod+1,%if(%valid(sfinal(speriod+T+speriod*(M-1))),sfinal(speriod+T+speriod*(M-1)),%na),%if(%valid(sfinal(stfdata-%month(stfdata)+T+speriod*(M-1))),sfinal(stfdata-%month(stfdata)+T+speriod*(M-1)),%na))
     label base+M
     # %string(%year(stfdata-%month(stfdata)+1+speriod*(M-1)))
end do M
}

com S = fix(sN/12)
do i=1,S
ieval M=(i-1)*12
com prud = spru1 + "e" + i + ".rgf"
        if save
        {
        open plot &prud
        spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+10
    # base+M+11
    # base+M+12
    spgraph(done)
     close plot   
        }
        else
        {
        spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+10
    # base+M+11
    # base+M+12
    spgraph(done)
        }
end do i
*
ieval M=S*12
com i = s+1
com prud = pru1 + "e" + i + ".rgf"
*
*
if sN-(S*12)==1
    {
if save
{
    open plot &prud
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 1
    # base+M+1
     close plot
}
else
{
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 1
    # base+M+1
 }
}
else if sN-(s*12)==2
    {
if save
{
    open plot &prud
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+1
    # base+M+2
    close plot
}
else
{
 
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+1
    # base+M+2
   
}
    }
else if sN-(s*12)==3
    {
if save
{
    open plot &prud
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    close plot
   }
else
{

    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
   
}
    }
else if sN-(s*12)==4
    {
if save
{
    open plot &prud
     spgraph(hfields=1,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+1
    # base+M+2
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+3
    # base+M+4
    spgraph(done)
    close plot
   }
else
{
 
    spgraph(hfields=1,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+1
    # base+M+2
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+3
    # base+M+4
    spgraph(done)
    
}
    }
else if sN-(s*12)==5
    {
if save
{
    open plot &prud
    spgraph(hfields=1,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+4
    # base+M+5
    spgraph(done)
    close plot
    }
else
{

    spgraph(hfields=1,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+4
    # base+M+5
    spgraph(done)
    
}
}
else if sN-(s*12)==6
    {
if save
{
    open plot &prud
      spgraph(hfields=1,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    spgraph(done)
    close plot
  }
else
{

    spgraph(hfields=1,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    spgraph(done)
    
}
    }
else if sN-(s*12)==7
    {
if save
{
    open plot &prud
    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+4
    # base+M+5
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+6
    # base+M+7
    spgraph(done)
    close plot
  }
else
{
 
    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+4
    # base+M+5
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+6
    # base+M+7
    spgraph(done)
   
}
    }
else if sN-(s*12)==8
    {
if save
{
    open plot &prud
    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+7
    # base+M+8
    spgraph(done)
    close plot
}
else
{

    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+7
    # base+M+8
    spgraph(done)
    
}
    }
else if sN-(s*12)==9
    {
if save
{
    open plot &prud
     spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    spgraph(done)
    close plot
  }
else
{
  
    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    spgraph(done)
   
}
    }
else if sN-(s*12)==10
    {
if save
{
    open plot &prud
    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 1
    # base+M+10
    spgraph(done)
    close plot
  }
else
{

    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 1
    # base+M+10
    spgraph(done)
   
}
    }
else if sN-(s*12)==11
    {
if save
{
    open plot &prud
    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+10
    # base+M+11
    spgraph(done)
    close plot
   }
else
{

    spgraph(hfields=2,vfields=2)
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+1
    # base+M+2
    # base+M+3
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+4
    # base+M+5
    # base+M+6
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 3
    # base+M+7
    # base+M+8
    # base+M+9
    GRAPH(subheader="Seasonal paths",style=symbol,header=sheader9,key=bellow,nodates) 2
    # base+M+10
    # base+M+11
    spgraph(done)
   
}
    }
else
{
dis '!! Multiple of 12 !!'
}
end sesta
***********
procedure sregu rpru1 rperiod rN rheader9 rtfdata rldata rfinal
*
option switch save 0
*
type string rpru1 rheader9
type integer rperiod rN rtfdata
type series rfinal
*
ieval savegr = save
*
com prud = rpru1 + "r.rgf"
*
if rperiod==1
{
messagebox(style=alert) 'There is no seasonality in annual data.'
}
if rperiod == 4
{
clear first second third forth
*
if %month(rtfdata)==1
{
    set first 1 1 = rfinal(rtfdata)
    set second 1 1 = rfinal(rtfdata+1)
    set third 1 1 = rfinal(rtfdata+2)
    set forth 1 1 = rfinal(rtfdata+3)
}
else if %month(rtfdata)<>1.and.%month(rtfdata)==2
{
    set second 1 1 = rfinal(rtfdata)
    set third 1 1 = rfinal(rtfdata+1)
    set forth 1 1 = rfinal(rtfdata+2)
}
else if %month(rtfdata)<>1.and.%month(rtfdata)<>2.and.%month(rtfdata)==3
{
    set third 1 1 = rfinal(rtfdata)
    set forth 1 1 = rfinal(rtfdata+1)
}
else
    set forth 1 1 = rfinal(rtfdata)
do M = 2,rN-1
  SET first M M = %if(rtfdata>=rperiod+1,rfinal(1+4*M),rfinal(1+4*(M-1)))
  *SET second M M = rfinal(2+4*( M-1))
  *SET third M M = rfinal(3+4*( M-1))
  *SET forth M M = rfinal(4+4*( M-1))
   set second M M = %if(rtfdata>=rperiod+1,rfinal(2+4*M),rfinal(2+4*(M-1)))
   set third M M = %if(rtfdata>=rperiod+1,rfinal(3+4*M),rfinal(3+4*(M-1)))
   set forth M M = %if(rtfdata>=rperiod+1,rfinal(4+4*M),rfinal(4+4*(M-1)))
end do
*
if %month(rldata)==4
{
    set forth N N = rfinal(rldata)
    set third N N = rfinal(rldata-1)
    set second N N = rfinal(rldata-2)
    set first N N = rfinal(rldata-3)
}
else if %month(rldata)<>4.and.%month(rldata)==3
{
    set third N N = rfinal(rldata)
    set second N N = rfinal(rldata-1)
    set first N N = rfinal(rldata-2)
}
else if %month(rldata)<>4.and.%month(rldata)<>3.and.%month(rldata)==2
{
    set second N N = rfinal(rldata)
    set first N N = rfinal(rldata-1)
}
else
    set first N N = rfinal(rldata)
com e = (%year(rtfdata))
*
if save
{
open plot &prud
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 4
# first
# second
# third
# forth
close plot
}
else
{
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 4
# first
# second
# third
# forth
}
*
}
if rperiod==12
{
SET jan 1 rN = 0.0
SET FEB 1 rN = 0.0
SET MAR 1 rN = 0.0
SET apr 1 rN = 0.0
SET MAY 1 rN = 0.0
SET JUN 1 rN = 0.0
SET JUL 1 rN = 0.0
SET aug 1 rN = 0.0
SET SEP 1 rN = 0.0
SET OCT 1 rN = 0.0
SET NOV 1 rN = 0.0
SET DIC 1 rN = 0.0
*
do M = 1,rN
  SET jan M M = rfinal(1+12*( M-1))
  SET FEB M M = rfinal(2+12*( M-1))
  SET MAR M M = rfinal(3+12*( M-1))
  SET apr M M = rfinal(4+12*( M-1))
  SET MAY M M = rfinal(5+12*( M-1))
  SET JUN M M = rfinal(6+12*( M-1))
  SET JUL M M = rfinal(7+12*( M-1))
  SET aug M M = rfinal(8+12*( M-1))
  SET SEP M M = rfinal(9+12*( M-1))
  SET OCT M M = rfinal(10+12*( M-1))
  SET NOV M M = rfinal(11+12*( M-1))
  SET DIC M M = rfinal(12+12*( M-1))
end do
*
com e = (%year(rtfdata))
*
if save
{
open plot &prud
spgraph(hfields=2,vfields=2)
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# jan
# FEB
# MAR
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# apr
# MAY
# JUN
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# JUL
# aug
# SEP
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# OCT
# NOV
# DIC
spgraph(done)
close plot
}
else
{
spgraph(hfields=2,vfields=2)
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# jan
# FEB
# MAR
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# apr
# MAY
# JUN
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# JUL
# aug
# SEP
GRAPH(subheader="Regular paths",header=rHEADER9,key=bellow,nodates,number=e) 3
# OCT
# NOV
# DIC
spgraph(done)
}
}
end sregu
***********
procedure ar arbeta artstud
/* Procedure LAGSELECT is used for choosing the order of the
 autoregressive polinomial

 CRIT=AIC/[BIC]/LB/LM/GS/ALL
     With this option you select the criterion, which
     determines the choice of the lag length for the
     test regression.

     option ALL calculates all the criterions and select the maximum lag.

*/
type vector *arbeta *artstud
option choice critar 2 aic bic lb lm gs all
*
declare vector[integer] detlist
local integer orden
*
com k = fix(nobs / 3)
*
inquire(seasonal) period
*
if period == 4
{
 seasonal DICI
 enter(varying) detlist
 # constant trend DICI{-3 to -1}
 dim arbeta(5)
 dim artstud(5)
 ieval orden=5
}
if period == 12
{
 seasonal DICI
 enter(varying) detlist
 # constant trend DICI{-11 to -1}
 dim arbeta(13)
 dim artstud(13)
 ieval orden=13
}
if period==1
{
 enter(varying) detlist
 # constant trend
 dim arbeta(2)
 dim artstud(2)
 ieval orden=2
}
@lagselect(crit=critar,det=none,exog,maxlag=k,print) final tfdata ldata
# detlist
if critar==1 ;compute i = lagaic
if critar==2 ;compute i = lagbic
if critar==3 ;compute i = laglb
if critar==4 ;compute i = laglm
if critar==5 ;compute i = laggs
if critar==6 ;compute i = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
*
linreg(noprint) final tfdata ldata RES
# detlist final{1 TO i}
*
ieval orderp=i
compute nobsar=%nobs
compute arbeta=%xsubvec(%beta,1,orden)
compute artstud=%xsubvec(%tstats,1,orden)
end ar
*********************
*********************
procedure mhegy tpi F0304 F0506 F0708 F0910 F1112 F0212 F0112 lags hegycoef hegyt hegyobs
 *
 option choice  det     2 none constant trend
 option switch  dseas   1
 option switch  texout  0
 option switch allinone 0
 option choice  crithm  2 aic bic lb lm gs all
 option integer maxlag 12
 type vector *tpi *hegycoef *hegyt
 type real *F0304 *F0506 *F0708 *F0910 *F1112 *F0212 *F0112
 type integer *lags *hegyobs
*
 local real fac
 local series y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
 local series d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11
 dimension tpi(12)
 *
* ieval tex = texout
if allinone==0
{
 display(unit=testout) '*********************************************************************'
 display(unit=testout) 'HEGY-Test on Seasonal Integration (Monthly Version)'
 display(unit=testout) 'for series' nombre header10 'from' %datelabel(tfdata) 'to' %datelabel(ldata)
}
 *
 if (period.NE.12)
 {
  messagebox(style=alert) 'Sorry?, use MHEGY procedure for monthly data only!!! :-('
  halt
 }
 *
 set trend tfdata ldata = T
 if dseas
 {
  seasonal  d1 tfdata ldata 12  1
  seasonal  d2 tfdata ldata 12  2
  seasonal  d3 tfdata ldata 12  3
  seasonal  d4 tfdata ldata 12  4
  seasonal  d5 tfdata ldata 12  5
  seasonal  d6 tfdata ldata 12  6
  seasonal  d7 tfdata ldata 12  7
  seasonal  d8 tfdata ldata 12  8
  seasonal  d9 tfdata ldata 12  9
  seasonal d10 tfdata ldata 12 10
  seasonal d11 tfdata ldata 12 11
  seasonal d12 tfdata ldata 12 12
 }
 *
 filter final (tfdata+11) ldata y1
 #  0   1   2   3   4   5   6   7   8   9   10  11
 # 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
 filter final (tfdata+11) ldata y2
 #   0    1    2    3    4    5    6    7    8    9    10   11
 # -1.0  1.0 -1.0  1.0 -1.0  1.0 -1.0  1.0 -1.0  1.0 -1.0  1.0
 filter final (tfdata+11) ldata y4
 #   0    1    2    3    4    5    6    7    8    9    10   11
 # -1.0  0.0  1.0  0.0 -1.0  0.0  1.0  0.0 -1.0  0.0  1.0  0.0
* #  1.0  0.0 -1.0  0.0  1.0  0.0 -1.0  0.0 -1.0  0.0 -1.0  0.0
 set y3 (startl+12) ldata = y4{1}
 comp fac = sin(2.0*%pi/3.0)
 filter final (tfdata+11) ldata y6
 #   0    1    2    3    4    5    6    7    8    9    10   11
 #  fac -fac  0.0  fac -fac  0.0  fac -fac  0.0  fac -fac  0.0
 set y5 (tfdata+12) ldata = -(sqrt(3.0)/3.0) * (y6 + 2.0 * y6{1})
 filter final (tfdata+11) ldata y8
 #   0    1    2    3    4    5    6    7    8    9    10   11
 #  -fac  -fac  0.0 fac fac  0.0  -fac  -fac  0.0 fac fac  0.0
 set y7 (tfdata+12) ldata = -(sqrt(3.0)/3.0) * (y8 - 2.0 * y8{1})
 filter final (tfdata+11) ldata y10
 #   0    1    2    3    4    5    6    7    8    9    10   11
 #  0.5 -fac  1.0 -fac  0.5  0.0 -0.5  fac -1.0  fac -0.5  0.0
 set y9 (tfdata+12) ldata = -(sqrt(3.0) * y10 + 2.0 * y10{1})
 filter final (tfdata+11) ldata y12
 #   0    1    2    3    4    5    6    7    8    9    10   11
 #  -0.5  -fac  -1.0  -fac  -0.5  0.0 0.5 fac 1.0 fac 0.5  0.0
 set y11 (tfdata+12) ldata = -(sqrt(3.0) * y12 - 2.0 * y12{1})
 filter final (tfdata+12) ldata y13
 #   0    12
 #  1.0 -1.0
 *
 if (det.eq.1)
 {
  if dseas
  {
  if allinone==0
    {
  display(unit=testout) ' Deterministic components: Deterministic seasonals.'
   display(unit=testout) '***************************************************'
   display(unit=testout) ' '
     }
   @lagselect(crit=crithm,det=none,exog,maxlag=maxlag,noprint) y13 (tfdata+12) ldata
   # d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11
if crithm==1 ;compute lags = lagaic
if crithm==2 ;compute lags = lagbic
if crithm==3 ;compute lags = laglb
if crithm==4 ;compute lags = laglm
if crithm==5 ;compute lags = laggs
if crithm==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
   *
   if lags
   {
    linreg(noprint) y13 (tfdata+12+lags) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 y13{1 to lags}
   }
   else
   {
    linreg(noprint) y13 (tfdata+12) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11
   }
 ieval hegyobs=%nobs
  }
  else
  {
   if allinone==0
    {
   display(unit=testout) ' Deterministic components: None.'
   display(unit=testout) '***************************************************'
   display(unit=testout) ' '
    }
   @lagselect(crit=crithm,det=none,noexog,maxlag=maxlag,noprint) y13 (tfdata+12) ldata
if crithm==1 ;compute lags = lagaic
if crithm==2 ;compute lags = lagbic
if crithm==3 ;compute lags = laglb
if crithm==4 ;compute lags = laglm
if crithm==5 ;compute lags = laggs
if crithm==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
   *
   if lags
   {
    linreg(noprint) y13 (tfdata+12+lags) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} y13{1 to lags}
   }
   else
   {
    linreg(noprint) y13 (tfdata+12) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1}
   }

 ieval hegyobs=%nobs
  }
 }
 else if (det.eq.2)
 {
  if dseas
  {
   if allinone==0
   {
   display(unit=testout) ' Deterministic components: Intercept and deterministic seasonals.'
   display(unit=testout) '******************************************************************'
   display(unit=testout) ' '
   }
   @lagselect(crit=crithm,det=constant,exog,maxlag=maxlag,noprint) y13 (tfdata+12) ldata
   # d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11
if crithm==1 ;compute lags = lagaic
if crithm==2 ;compute lags = lagbic
if crithm==3 ;compute lags = laglb
if crithm==4 ;compute lags = laglm
if crithm==5 ;compute lags = laggs
if crithm==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
   *
   if lags
   {
    linreg(print) y13 (tfdata+24+lags) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} $
    constant d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 y13{1 to lags}
   }
   else
   {
    linreg(noprint) y13 (tfdata+12) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} constant d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11
   }

 ieval hegyobs=%nobs
  }
  else
  {
   if allinone==0
   {
   display(unit=testout) ' Deterministic components: Intercept.'
   display(unit=testout) '**************************************'
   display(unit=testout) ' '
   }
   @lagselect(crit=crithm,det=constant,noexog,maxlag=maxlag,noprint) y13 (tfdata+12) ldata
if crithm==1 ;compute lags = lagaic
if crithm==2 ;compute lags = lagbic
if crithm==3 ;compute lags = laglb
if crithm==4 ;compute lags = laglm
if crithm==5 ;compute lags = laggs
if crithm==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
   *
   if lags
   {
    linreg(print) y13 (tfdata+12+lags) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} constant y13{1 to lags}
   }
   else
   {
    linreg(noprint) y13 (tfdata+12) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} constant
   }

 ieval hegyobs=%nobs
  }
 }
 else
 {
  if dseas
  {
   if allinone==0
   {
   display(unit=testout) ' Deterministic components: Intercept, trend and deterministic seasonals.'
   display(unit=testout) '************************************************************************'
   display(unit=testout) ' '
      }
   @lagselect(crit=crithm,det=trend,exog,maxlag=maxlag,noprint) y13 (tfdata+12) ldata
   # d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11
if crithm==1 ;compute lags = lagaic
if crithm==2 ;compute lags = lagbic
if crithm==3 ;compute lags = laglb
if crithm==4 ;compute lags = laglm
if crithm==5 ;compute lags = laggs
if crithm==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
   *
   if lags
   {
    linreg(noprint) y13 (tfdata+12+lags) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} constant trend d1 d2 d3 d4 d5 d6 d7 d8 $
           d9 d10 d11 y13{1 to lags}
   }
   else
   {
    linreg(noprint) y13 (tfdata+12) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} constant trend d1 d2 d3 d4 d5 d6 d7 d8 d9 $
           d10 d11
   }
  dim hegycoef(13) hegyt(13)  
  compute hegycoef=%xsubvec(%beta,13,25)
  compute hegyt=%xsubvec(%tstats,13,25)
  ieval hegyobs=%nobs
   }
  else
  {
   if allinone==0
   {
   display(unit=testout) ' Deterministic components: Intercept, trend.'
   display(unit=testout) '********************************************'
   display(unit=testout) ' '
   }
   @lagselect(crit=crithm,det=trend,noexog,maxlag=maxlag,noprint) y13 (tfdata+12) ldata
if crithm==1 ;compute lags = lagaic
if crithm==2 ;compute lags = lagbic
if crithm==3 ;compute lags = laglb
if crithm==4 ;compute lags = laglm
if crithm==5 ;compute lags = laggs
if crithm==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
   *
   if lags
   {
    linreg(noprint) y13 (tfdata+12+lags) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} constant trend y13{1 to lags}
   }
   else
   {
    linreg(noprint) y13 (tfdata+12) ldata
    # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1} constant trend
   }
 ieval hegyobs=%nobs
  }
 }
*
 do ii=1,12
  comp tpi(ii) = %beta(ii)/sqrt(%seesq*%xx(ii,ii))
 end do
*
 exclude(noprint)
 # y3{1} y4{1}
 compute F0304 = %cdstat
 exclude(noprint)
 # y5{1} y6{1}
 compute F0506 = %cdstat
 exclude(noprint)
 # y7{1} y8{1}
 compute F0708 = %cdstat
 exclude(noprint)
 # y9{1} y10{1}
 compute F0910 = %cdstat
 exclude(noprint)
 # y11{1} y12{1}
 compute F1112 = %cdstat
 exclude(noprint)
 # y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1}
 compute F0212 = %cdstat
 exclude(noprint)
 # y1{1} y2{1} y3{1} y4{1} y5{1} y6{1} y7{1} y8{1} y9{1} y10{1} y11{1} y12{1}
 compute F0112 = %cdstat
*
if crithm==1 ;compute hcrit = 'AIC'
if crithm==2 ;compute hcrit = 'BIC'
if crithm==3 ;compute hcrit = 'Ljung-Box'
if crithm==4 ;compute hcrit = 'LM'
if crithm==5 ;compute hcrit = 'General-to-specific'
if crithm==6 
    {
    if lags == lagaic 
    { 
        compute hcrit = 'AIC'
    }
    else if lags == lagbic
    { 
        compute hcrit = 'BIC'
    }
    else if lags == laglb 
    { 
        compute hcrit = 'Ljung-Box'
    }
    else if lags == laggs 
    { 
        compute hcrit = 'General-to-specific'
    }
    else  
    { 
        compute hcrit = 'LM' 
    }
    }
if texout==0
 {
 display(unit=testout) ' Lag selection using the' hcrit ' criterion.'
 display(unit=testout) ' Lags=' lags
*
 display(unit=testout) ' '
 display(unit=testout) ' Number of observations:' hegyobs '  Regression based on' (hegyobs-12) 'observations.'
 display(unit=testout) '              Cycles        t-Tests               '
 display(unit=testout) ' Frequency   per Year   pi_odd   pi_even   F-Test '
 display(unit=testout) '**************************************************'
 display(unit=testout) @2 '  0  ' @13 '   0   '  @24 ###.## tpi(1)  @33 '   -  '       @43 '   -  '
 display(unit=testout) @2 ' pi  ' @13 '   6   '  @24 '   -  '       @33 ###.## tpi(2)  @43 '   -  '
 display(unit=testout) @2 ' pi/2' @13 '3 and 9'  @24 ###.## tpi(3)  @33 ###.## tpi(4)  @43 ###.## F0304
 display(unit=testout) @2 '2pi/3' @13 '8 and 4'  @24 ###.## tpi(5)  @33 ###.## tpi(6)  @43 ###.## F0506
 display(unit=testout) @2 ' pi/3' @13 '2 and 10' @24 ###.## tpi(7)  @33 ###.## tpi(8)  @43 ###.## F0708
 display(unit=testout) @2 '5pi/6' @13 '7 and 5'  @24 ###.## tpi(9)  @33 ###.## tpi(10) @43 ###.## F0910
 display(unit=testout) @2 ' pi/6' @13 '1 and 11' @24 ###.## tpi(11) @33 ###.## tpi(12) @43 ###.## F1112
 display(unit=testout) '***************************************************'
 display(unit=testout) ' '
 display(unit=testout) 'Critical values from the distributions of the statistics for seasonal unit roots'
display(unit=testout) 'Are found in J. Joseph Beaulieu & Jeffrey A. Miron (1994), "Seasonal unit rots in aggregate U.S. data", JOURNAL OF ECONOMETRICS, 55, 305-328. '
display(unit=testout) ' '
display(unit=testout) @7 't:pi1=0' @32 't: pi2=pi' @57 't: pi_odd' 
display(unit=testout)  @7 '--------------------' @32 '--------------------' @57 '--------------------' 
display(unit=testout) ' T ' @7 '0.01    0.05    0.10' @32 '0.01    0.05    0.10' @57 '0.01    0.05    0.10' 
display(unit=testout) '----------------------------------------------------------------------------'
 if (det.eq.1)
{
    if dseas
    {
    display(unit=testout) ' :-00'
    }
    else
    {
    display(unit=testout) '240' @6 '-2.51   -1.89   -1.58' @31 '-2.53   -1.87   -1.57' @56 '-2.50   -1.88   -1.55'
    }
}
else if (det.eq.2)
{
    if dseas
    {
    display(unit=testout) '240' @6 '-3.32   -2.76   -2.47' @31 '-3.28   -2.76   -2.48' @56 '-3.83   -3.25   -2.95' 
    }
    else
    {
    display(unit=testout) '240' @6 '-3.35   -2.80   -2.51' @31 '-2.48   -1.89   -1.57' @56 '-2.51   -1.87   -1.54'
    }
}
else
{
    if dseas
    {
    display(unit=testout) '240' @6 '-3.83   -3.28   -2.99' @31 '-3.31   -2.75   -2.47' @56 '-3.79   -3.24   -2.95'
    }
    else
    {
    display(unit=testout) '240' @6 '-3.87   -3.32   -3.06' @31 '-2.52   -1.88   -1.55' @56 '-2.49   -1.88   -1.54' 
    }
}
*
*
*
*
display(unit=testout) ' '
display(unit=testout) ' '
display(unit=testout) @23 't: pi_even' @56 'F-Test: pi_odd,pi_even' 
display(unit=testout) @7 '--------------------------------------------' @56 '----------------------' 
display(unit=testout) ' T ' @7 '0.01    0.025    0.05   0.95    0.975    0.99' @56 '0.95    0.975     0.99'
display(unit=testout) '-----------------------------------------------------------------------------' 
 if (det.eq.1)
{
    if dseas
    {
    display(unit=testout) ' :-00'
    }
    else
    {
    display(unit=testout) '240' @6 '-2.31    -1.95   -1.63   1.61     1.93    2.29' @56 '3.03     3.71     4.60'
    }
}
else if (det.eq.2)
{
    if dseas
    {
    display(unit=testout) '240' @6 '-2.61    -2.21   -1.85   1.86     2.20    2.60' @56 '6.26     7.19     8.35'
    }
    else
    {
    display(unit=testout) '240' @6 '-2.30    -1.93   -1.62   1.60     1.91    2.28' @56 '3.01     3.68     4.60'
    }
}
else
{
    if dseas
    {
    display(unit=testout) '240' @6 '-2.57    -2.18   -1.85   1.86     2.19    2.60' @56 '6.23     7.14     8.33'
    }
    else
    {
    display(unit=testout) '240' @6 '-2.28    -1.93   -1.61   1.59     1.90    2.26' @56 '2.97     3.64     4.53'
    }
}
 display(unit=testout) ' '
 display(unit=testout) '*****************************************************************************'
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
}
*
if allinone==0
 {
if texout==1
    {
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) '\begin{table}'
    dis(unit=testout) '\begin{center}'
    dis(unit=testout) '\caption{HEGY integration test for ' nombre header10 '}'
    dis(unit=testout) '\label{ta:' @-1 nombre @-1 '}'
    dis(unit=testout) '\begin{tabular}{c c c c}'
    dis(unit=testout) 'Frequency & $t_{odd}$ & $t_{even}$ & F-test \\'
    dis(unit=testout) '\hline'
    dis(unit=testout) ' 0 &' ###.## tpi(1) '& - & - \\'
    dis(unit=testout) ' $\pi$ &  - &' ###.## tpi(2) '& - \\'
    dis(unit=testout) ' $\pi/2$ &' ###.## tpi(3) '&' ###.## tpi(4) '&' ###.## F0304 '\\'
    dis(unit=testout) ' $2 \pi/3$ &' ###.## tpi(5) '&' ###.## tpi(6) '&' ###.## F0506 '\\'
    dis(unit=testout) ' $\pi/3$ & &' ###.## tpi(7) '&' ###.## tpi(8) '&' ###.## F0708 '\\'
    dis(unit=testout) ' $5 \pi/6$ &' ###.## tpi(9) '&' ###.## tpi(10) '&' ###.## F0910 '\\'
    dis(unit=testout) ' $\pi/6$   &' ###.## tpi(11) '&' ###.## tpi(12) '&' ###.## F1112 '\\'
    dis(unit=testout) '\hline'
    *
    if (det.eq.1)
    {
    if dseas
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: SD.}}'
    }
    else
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: None.}}'
    }
    }
    else if (det.eq.2)
    {
    if dseas
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I, SD.}}'
    }
    else
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I.}}'
    }
    }
    else 
    {
    if dseas
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I, Tr, SD.}}'
    }
    else
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I, Tr.}}'
    }
    }
    dis(unit=testout) '\end{tabular}'
    dis(unit=testout) '\end{center}'
    dis(unit=testout) '\end{table}' 
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    }
}
    
        
end mhegy
*********************
*********************
*******Quarterly HEGY based on the procedure mhegy.src

procedure hegyq tpi F34 F24 F14 lags hegyqc hegyqt hegyqobs
*
 option choice  det     2 none constant trend
 option switch  dseas   1
 option switch  texout  0
 option switch  allinone 0
 option choice  crithq  2 aic bic lb lm gs all
 option integer maxlag 12
 *
 type vector *tpi *hegyqc *hegyqt
 type real *F34 *F24 *F14
 type integer *lags *hegyqobs
 local integer k
 local series y1 y2 y3 y4 q1 q2 q3 q4
 dimension tpi(12)
 *
 ieval tex = texout
 *
if allinone==0
{
 display(unit=testout) '*******************************************************'
 display(unit=testout) 'HEGY-Test on Seasonal Integration (quarterly version)'
 display(unit=testout) 'for ' nombre header10 'from' %datelabel(tfdata) 'to' %datelabel(ldata)
}
 *
 if (period.NE.4)
 {
  messagebox(style=alert) 'Sorry?, use HEGYq procedure for quarterly data only!!! :-('
  halt
 }
 *
 set trend tfdata ldata = T
 if dseas
 {
  seasonal q1 tfdata ldata 4 1
  seasonal q2 tfdata ldata 4 2
  seasonal q3 tfdata ldata 4 3
  seasonal q4 tfdata ldata 4 4
 }
 *
 set y1 = final + final{1} + final{2} + final{3}
 set y2 = - ( final - final{1} + final{2} - final{3} )
 set y3 = -( final - final{2} )
 set y4 = final - final{4}
 *
 com k = fix(nobs / 3)
 *
 if (det.eq.1)
 {
  if dseas
  {
if allinone==0
{ 
   display(unit=testout) 'Deterministic components: Deterministic seasonals.'
   display(unit=testout) '***************************************************'
   display(unit=testout) ' '
} 
  @lagselect(crit=crithq,det=none,exog, maxlag=k,noprint) y4 (tfdata+4) ldata
   # q1 q2 q3 q4
if crithq==1 ;compute lags = lagaic
if crithq==2 ;compute lags = lagbic
if crithq==3 ;compute lags = laglb
if crithq==4 ;compute lags = laglm
if crithq==5 ;compute lags = laggs
if crithq==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))
   *
   if lags
   {
    linreg(noprint) y4 (tfdata+4+lags) ldata
    # y1{1} y2{1} y3{2 1} q1 q2 q3 q4 y4{1 to lags}
   }
   else
   {
    linreg(noprint) y4 (tfdata+4) ldata
    # y1{1} y2{1} y3{2 1} q1 q2 q3 q4
   }
 ieval hegyqobs=%nobs
  }
  else
  {
if allinone==0
 {
   display(unit=testout) 'Deterministic components: None.'
   display(unit=testout) '*******************************'
   display(unit=testout) ' '
 }
   @lagselect(crit=crithq,det=none,noexog,maxlag=k,noprint) y4 (tfdata+4) ldata
if crithq==1 ;compute lags = lagaic
if crithq==2 ;compute lags = lagbic
if crithq==3 ;compute lags = laglb
if crithq==4 ;compute lags = laglm
if crithq==5 ;compute lags = laggs
if crithq==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))

   *
   if lags
   {
    linreg(noprint) y4 (tfdata+4+lags) ldata
    # y1{1} y2{1} y3{2 1} y4{1 to lags}
   }
   else
   {
    linreg(noprint) y4 (tfdata+4) ldata
    # y1{1} y2{1} y3{2 1}
   }
 ieval hegyqobs=%nobs
  }
 }
 else if (det.eq.2)
 {
  if dseas
  {
   if allinone==0
   {
   display(unit=testout) 'Deterministic components: Intercept and deterministic seasonals.'
   display(unit=testout) '****************************************************************'
   display(unit=testout) ' '
   } 
   @lagselect(crit=crithq,det=constant,exog,maxlag=k,noprint) y4 (tfdata+4) ldata
   # q1 q2 q3 
if crithq==1 ;compute lags = lagaic
if crithq==2 ;compute lags = lagbic
if crithq==3 ;compute lags = laglb
if crithq==4 ;compute lags = laglm
if crithq==5 ;compute lags = laggs
if crithq==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))

   *
   if lags
   {
    linreg(noprint) y4 (tfdata+4+lags) ldata
    # y1{1} y2{1} y3{2 1} constant q1 q2 q3 y4{1 to lags}
   }
   else
   {
    linreg(noprint) y4 (tfdata+4) ldata
    # y1{1} y2{1} y3{2 1} constant q1 q2 q3 
   }
 ieval hegyqobs=%nobs
  }
  else
  {
   if allinone==0
   {
   display(unit=testout) 'Deterministic components: Intercept.'
   display(unit=testout) '************************************'
   display(unit=testout) ' '
   }
   @lagselect(crit=crithq,det=constant,noexog,maxlag=k,noprint) y4 (tfdata+4) ldata
if crithq==1 ;compute lags = lagaic
if crithq==2 ;compute lags = lagbic
if crithq==3 ;compute lags = laglb
if crithq==4 ;compute lags = laglm
if crithq==5 ;compute lags = laggs
if crithq==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))

   *
   if lags
   {
    linreg(noprint) y4 (tfdata+4+lags) ldata
    # y1{1} y2{1} y3{2 1} constant y4{1 to lags}
   }
   else
   {
    linreg(noprint) y4 (tfdata+4) ldata
    # y1{1} y2{1} y3{2 1} constant
   }
 ieval hegyqobs=%nobs
  }
 }
 else
 {
  if dseas
  {
   if allinone==0
   {
   display(unit=testout) 'Deterministic components: Intercept, trend and deterministic seasonals.'
   display(unit=testout) '***********************************************************************'
   display(unit=testout) ' '
   }
   @lagselect(crit=crithq,det=trend,exog,maxlag=k,noprint) y4 (tfdata+4) ldata
   # q1 q2 q3 
if crithq==1 ;compute lags = lagaic
if crithq==2 ;compute lags = lagbic
if crithq==3 ;compute lags = laglb
if crithq==4 ;compute lags = laglm
if crithq==5 ;compute lags = laggs
if crithq==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))

   *
   if lags
   {
    linreg(noprint) y4 (tfdata+4+lags) ldata
    # y1{1} y2{1} y3{2 1} $
    constant trend q1 q2 q3 y4{1 to lags}
   }
   else
   {
    linreg(noprint) y4 (tfdata+4) ldata
    # y1{1} y2{1} y3{2 1} $
    constant trend q1 q2 q3 
   }
   dim hegyqc(5) hegyqt(5)
   compute hegyqc=%xsubvec(%beta,1,5)
   compute hegyqt=%xsubvec(%tstats,1,5)
   ieval hegyqobs=%nobs
  }
  else
  {
  if allinone==0
   {
   display(unit=testout) 'Deterministic components: Intercept and trend.'
   display(unit=testout) '**********************************************'
   display(unit=testout) ' '
   }
   @lagselect(crit=crithq,det=trend,noexog,maxlag=k,noprint) y4 (tfdata+4) ldata
if crithq==1 ;compute lags = lagaic
if crithq==2 ;compute lags = lagbic
if crithq==3 ;compute lags = laglb
if crithq==4 ;compute lags = laglm
if crithq==5 ;compute lags = laggs
if crithq==6 ;compute lags = %imax(lagaic,%imax(lagbic,%imax(laglb,%imax(laglm,laggs))))

   *
   if lags
   {
    linreg(noprint) y4 (tfdata+4+lags) ldata
    # y1{1} y2{1} y3{2 1} constant trend y4{1 to lags}
   }
   else
   {
    linreg(noprint) y4 (tfdata+4) ldata
    # y1{1} y2{1} y3{2 1} constant trend
   }
 ieval hegyqobs=%nobs
  }
 }
*
 do ii=1,4
  comp tpi(ii) = %beta(ii)/sqrt(%seesq*%xx(ii,ii))
 end do
*
 exclude(noprint)
 # y3{2 1}
 compute F34 = %cdstat
 exclude(noprint)
 # y2{1} y3{2 1}
 compute F24 = %cdstat
 exclude(noprint)
 # y1{1} y2{1} y3{2 1}
 compute F14 = %cdstat
*
if crithq==1 ;compute hcrit = 'AIC'
if crithq==2 ;compute hcrit = 'BIC'
if crithq==3 ;compute hcrit = 'Ljung-Box'
if crithq==4 ;compute hcrit = 'LM'
if crithq==5 ;compute hcrit = 'General-to-specific'
if crithq==6 
    {
    if lags == lagaic 
    { 
        compute hcrit = 'AIC'
    }
    else if lags == lagbic
    { 
        compute hcrit = 'BIC'
    }
    else if lags == laglb 
    { 
        compute hcrit = 'Ljung-Box'
    }
    else if lags == laggs 
    { 
        compute hcrit = 'General-to-specific'
    }
    else  
    { 
        compute hcrit = 'LM' 
    }
    }
if allinone==0
{
 if texout==0
 {
 display(unit=testout) ' Lag selection using the' hcrit ' criterion.'
 display(unit=testout) ' Lags=' lags
 display(unit=testout) ' '
 display(unit=testout) ' Number of observations:' hegyqobs '  Regression based on' (hegyqobs-4) 'observations.'
 display(unit=testout) '              Cycles        t-Tests               '
 display(unit=testout) ' Frequency   per Year   pi_odd   pi_even   F-Test '
 display(unit=testout) '**************************************************'
 display(unit=testout) @2 '  0  ' @13 '   0   '  @24 ###.## tpi(1)  @33 '   -  '       @43 '   -  '
 display(unit=testout) @2 ' pi  ' @13 '   2   '  @24 '   -  '       @33 ###.## tpi(2)  @43 '   -  '
 display(unit=testout) @2 ' pi/2' @13 '1 and 3'  @24 ###.## tpi(3)  @33 ###.## tpi(4)  @43 ###.## F34
 display(unit=testout) '**************************************************'
 display(unit=testout) ' '
 display(unit=testout) 'Critical values obtained from Hylleberg, Engle, Granger and Yoo (1990), '
 display(unit=testout) '"Seasonal Integration and Cointegration", JOURNAL OF ECONOMETRICS, 44, 215-238: '
display(unit=testout) ' '
 display(unit=testout) @7 't: pi1=0' @32 't: pi2=pi' @57 't: pi_odd' 
 display(unit=testout)  @7 '--------------------' @32 '--------------------' @57 '--------------------' 
 display(unit=testout) ' T ' @7 '0.01    0.05    0.10' @32 '0.01    0.05    0.10' @57 '0.01    0.05    0.10' 
display(unit=testout) '----------------------------------------------------------------------------'
 
 if (det.eq.1)
 {
    if dseas
    {
    display(unit=testout) ':-00'
    }
    else
    {
    display(unit=testout) '136' @6 '-2.62   -1.93   -1.59' @31 '-2.60   -1.94   -1.61' @56 '-2.58   -1.92   -1.56' 
    display(unit=testout) '200' @6 '-2.62   -1.94   -1.62' @31 '-2.60   -1.95   -1.61' @56 '-2.58   -1.92   -1.55' 
    }
 }
 else if (det.eq.2)
 {
    if dseas
    {
    display(unit=testout) '136' @6 '-3.56   -2.94   -2.62' @31 '-3.49   -2.90   -2.59' @56 '-4.06   -3.44   -3.11' 
    display(unit=testout) '200' @6 '-3.51   -2.91   -2.59' @31 '-3.50   -2.89   -2.60' @56 '-4.00   -3.38   -3.07' 
    }
    else
    {
    display(unit=testout) '136' @6 '-3.51   -2.89   -2.58' @31 '-2.60   -1.91   -1.58' @56 '-2.53   -1.88   -1.53' 
    display(unit=testout) '200' @6 '-3.48   -2.87   -2.57' @31 '-2.58   -1.92   -1.59' @56 '-2.57   -1.90   -1.53'     
    }
  }  
 else
 {
 if dseas
    {
    display(unit=testout) '136' @6 '-4.15   -3.52   -3.21' @31 '-3.57   -2.93   -2.61' @56 '-4.05   -3.44   -3.12' 
    display(unit=testout) '200' @6 '-4.05   -3.49   -3.18' @31 '-3.52   -2.91   -2.60' @56 '-4.04   -3.41   -3.10' 
    }
    else
    {
    display(unit=testout) '136' @6 '-4.09   -3.46   -3.16' @31 '-2.65   -1.96   -1.63' @56 '-2.56   -1.90   -1.52' 
    display(unit=testout) '200' @6 '-4.05   -3.44   -3.15' @31 '-2.59   -1.95   -1.62' @56 '-2.58   -1.92   -1.56' 
    }
 }

*
display(unit=testout) ' '
display(unit=testout) ' '
display(unit=testout) @23 't: pi_even' @56 'F-Test: pi_odd,pi_even' 
display(unit=testout) @7 '--------------------------------------------' @56 '----------------------' 
display(unit=testout) ' T ' @7 '0.01   0.025    0.05    0.95   0.975    0.99' @56 '0.95    0.975     0.99'
display(unit=testout) '-----------------------------------------------------------------------------' 
 if (det.eq.1)
{
    if dseas
    {
    display(unit=testout) ' :-00'
    }
    else
    {
    display(unit=testout) '136' @6 '-2.44   -1.99   -1.68    1.66    1.99    2.38' @56 '3.14     3.86     4.81'  
    display(unit=testout) '200' @6 '-2.43   -1.98   -1.65    1.67    1.97    2.36' @56 '3.16     3.92     4.81'  
    }
}
else if (det.eq.2)
{
    if dseas
    {
    display(unit=testout) '136' @6 '-2.72   -2.31   -1.96    1.92    2.28    2.71' @56 '6.63     7.66     8.92'
    display(unit=testout) '200' @6 '-2.74   -2.33   -1.96    1.95    2.32    2.78' @56 '6.61     7.53     8.93'
    }
    else
    {
    display(unit=testout) '136' @6 '-2.36   -1.98   -1.68    1.65    1.97    2.31' @56 '3.00     3.70     4.73'
    display(unit=testout) '200' @6 '-2.36   -1.98   -1.66    1.65    1.96    2.30' @56 '3.12     3.86     4.76'
    }
}
else
{
    if dseas
    {
    display(unit=testout) '136' @6 '-2.71   -2.78   -1.94    1.96    2.31    2.78' @56 '6.62     7.59     8.77'
    display(unit=testout) '200' @6 '-2.65   -2.27   -1.92    1.97    2.31    2.71' @56 '6.57     7.56     8.96'

    }
    else
    {
    display(unit=testout) '136' @6 '-2.36   -1.97   -1.64    1.62    1.92    2.31' @56 '3.04     3.69     4.57'
    display(unit=testout) '200' @6 '-2.35   -1.97   -1.66    1.64    1.96    2.30' @56 '3.07     3.76     4.66'
    }
}

 display(unit=testout) ' '
 display(unit=testout) '*****************************************************************************'
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
 display(unit=testout) ' '
*
}
if texout
    {
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) '\begin{table}'
    dis(unit=testout) '\begin{center}'
    dis(unit=testout) '\caption{HEGY integration test for ' nombre header10 '}'
    dis(unit=testout) '\label{ta:' @-1 nombre @-1 '}'
    dis(unit=testout) '\begin{tabular}{c c c c}'
    dis(unit=testout) 'Frequency & $\pi_{odd}$ & $\pi_{even}$ & F-test \\'
    dis(unit=testout) '          &  t$_{ \pi -odd}$ & t$_{ \pi -even}$ & \\'
    dis(unit=testout) '\hline'
    dis(unit=testout) ' 0        & ' ###.## tpi(1) '& - & - \\'
    dis(unit=testout) ' $\pi$    &  - &' ###.## tpi(2) '& - \\'
    dis(unit=testout) ' $\pi/2$  &' ###.## tpi(3) '&' ###.## tpi(4) '&' ###.## F34 '\\'
    dis(unit=testout) '\hline'
    *
    if (det.eq.1)
    {
    if dseas
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: SD.}}'
    }
    else
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: None.}}'
    }
    }
    else if (det.eq.2)
    {
    if dseas
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I, SD.}}'
    }
    else
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I.}}'
    }
    }
    else 
    {
    if dseas
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I, Tr, SD.}}'
    }
    else
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I, Tr.}}'
    }
    }
    dis(unit=testout) '\end{tabular}'
    dis(unit=testout) '\end{center}'
    dis(unit=testout) '\end{table}' 
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    }
}
end hegyq
*********************
*********************
********procedure KPSS modificado
Procedure KPSS2
*
 option integer lmax    4
 option choice  det     2 constant trend
 option switch  texout  0  
 option switch  allinone 0 
*
 local vector kp kp1 kp2
 local series sums res
 local real sum2 lm
 dimension kp(5)

if allinone==1; branch 100
*
*   ieval tex = texout
*
 if texout==0
{
 if (det.eq.1)
 {
  display(unit=testout) '***********************************'
  display(unit=testout) 'KPSS: Intercept'
  display(unit=testout) 'for ' nombre header10 'from' %datelabel(tfdata) 'to' %datelabel(ldata)
  display(unit=testout) '***********************************'
  display(unit=testout) ' '
  *
  *  First: set up test for ETA(mu)
  *
  display(unit=testout) 'ETA(mu) Values:'
  display(unit=testout) ' '
  display(unit=testout) 'Critical Level:  0.10   0.05   0.025  0.01'
  display(unit=testout) 'Critical Value:  0.347  0.463  0.574  0.739'
  *
  *  Deviations from mean --> res
  *
  diff(center) final tfdata ldata res

  *  Partial sums --> sums

  acc res tfdata ldata sums
  *  Get sum of partial sums and store in real variable "sum2"
  *
  compute sum2 = 0.0
  do t = tfdata,ldata
   compute sum2 = sum2 + sums(t)*sums(t)
  end do t
  *
  *  Get consistent estimator of sigma^2, see KPSS,
  *   for l = 1,2,...,lmax
  *
  do ikount = 0,lmax
   mcov(damp=1.0,lags=ikount) tfdata ldata res
   # constant
   compute lm = (sum2 / nobs) / %cmom(1,1)
   display(unit=testout) 'For lag parameter l = ' ikount  '     ETA(mu) = ' lm
  com kp(ikount+1) = lm
  end do ikount
  display(unit=testout) '****************************************'
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
  }
*
 if (det.eq.2)
 {
  display(unit=testout) '***************************************************'
  display(unit=testout) 'KPSS: Intercept and trend'
  display(unit=testout) 'for ' nombre header10 'from' %datelabel(tfdata) 'to' %datelabel(ldata)
  display(unit=testout) '***************************************************'
  display(unit=testout) ' '
  *
  *  Next do test for ETA(tau)
  *
  display(unit=testout) ' '
  display(unit=testout) 'ETA(tau) Values:'
  display(unit=testout) ' '
  display(unit=testout) 'Critical Level:  0.10   0.05   0.025  0.01'
  display(unit=testout) 'Critical Value:  0.119  0.146  0.176  0.216'
  *
  *   Detrend series --> res
  *
  set trend tfdata ldata = T
  linreg(noprint) final tfdata ldata res
  # constant trend
  *
  *   Partial sums --> sums
  *
  acc res tfdata ldata sums
  *
  *   Get sum of partial sums and store in real variable "sum2"
  *
  compute sum2 = 0.0
  do t = tfdata,ldata
   eval sum2 = sum2 + sums(t)*sums(t)
  end do t
  *
  do ikount = 0,lmax
   mcov(damp=1.0,lags=ikount) tfdata ldata res
   # constant
   compute lm = (sum2 / nobs) / %cmom(1,1)
* 
  display(unit=testout) 'For lag parameter l = ' ikount  '     ETA(tau) = ' lm
  com kp(ikount+1) = lm
  end do ikount
  display(unit=testout) '****************************************'
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
  display(unit=testout) ' '
 }
}
*
if texout==1
    {
*******---
 if (det.eq.1)
 {
  *
  *  Deviations from mean --> res
  *
  diff(center) final tfdata ldata res

  *  Partial sums --> sums

  acc res tfdata ldata sums
  *  Get sum of partial sums and store in real variable "sum2"
  *
  compute sum2 = 0.0
  do t = tfdata,ldata
   compute sum2 = sum2 + sums(t)*sums(t)
  end do t
  *
  *  Get consistent estimator of sigma^2, see KPSS,
  *   for l = 1,2,...,lmax
  *
  do ikount = 0,lmax
   mcov(damp=1.0,lags=ikount) tfdata ldata res
   # constant
   compute lm = (sum2 / nobs) / %cmom(1,1)
  com kp(ikount+1) = lm
  end do ikount
  }
 if (det.eq.2)
 {
  *
  *   Detrend series --> res
  *
  set trend tfdata ldata = T
  linreg(noprint) final tfdata ldata res
  # constant trend
  *
  *   Partial sums --> sums
  *
  acc res tfdata ldata sums
  *
  *   Get sum of partial sums and store in real variable "sum2"
  *
  compute sum2 = 0.0
  do t = tfdata,ldata
   eval sum2 = sum2 + sums(t)*sums(t)
  end do t
  *
  do ikount = 0,lmax
   mcov(damp=1.0,lags=ikount) tfdata ldata res
   # constant
   compute lm = (sum2 / nobs) / %cmom(1,1)
* 
  com kp(ikount+1) = lm
  end do ikount
 }

*******---
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) '\begin{table}'
    dis(unit=testout) '\caption{KPSS test for ' nombre header10 '}'
    dis(unit=testout) '\label{ta:kpss' @-1 nombre @-1 '}'
    dis(unit=testout) '\begin{center}'
    dis(unit=testout) '\begin{tabular}{c c}'
 if (det.eq.1)
    {
    dis(unit=testout) 'Truncation lag & Statistic ($\eta_{\mu}$) \\'
    }
  else if (det.eq.2)
    {
    dis(unit=testout) 'Truncation lag & Statistic ($\eta_{\tau}$) \\'
    }
    dis(unit=testout) '\hline'
    dis(unit=testout) ' 0 & ' #.### kp(1) '\\'
    dis(unit=testout) ' 1 & ' #.### kp(2) '\\'
    dis(unit=testout) ' 2 & ' #.### kp(3) '\\'
    dis(unit=testout) ' 3 & ' #.### kp(4) '\\'
    dis(unit=testout) ' 4 & ' #.### kp(5) '\\'
    dis(unit=testout) '\hline'
 if (det.eq.1)
    {
    dis(unit=testout) '\multicolumn{2}{l}{\footnotesize{Deterministic: I.}}'
    }
 else if (det.eq.2)
    {
    dis(unit=testout) '\multicolumn{2}{l}{\footnotesize{Deterministic: I, Tr.}}'
    }
    dis(unit=testout) '\end{tabular}'
    dis(unit=testout) '\end{center}'
    dis(unit=testout) '\end{table}'
    }
if allinone==0; branch 200
:100
dim kp1(5) kp2(5)
* Both models: I, I+Tr
************I
  *
  *  Deviations from mean --> res
  *
  diff(center) final tfdata ldata res

  *  Partial sums --> sums

  acc res tfdata ldata sums
  *  Get sum of partial sums and store in real variable "sum2"
  *
  compute sum2 = 0.0
  do t = tfdata,ldata
   compute sum2 = sum2 + sums(t)*sums(t)
  end do t
  *
  *  Get consistent estimator of sigma^2, see KPSS,
  *   for l = 1,2,...,lmax
  *
  do ikount = 0,lmax
   mcov(damp=1.0,lags=ikount) tfdata ldata res
   # constant
   compute lm = (sum2 / nobs) / %cmom(1,1)
  com kp1(ikount+1) = lm
  end do ikount
****************** I+Tr
  *
  *   Detrend series --> res
  *
  set trend tfdata ldata = T
  linreg(noprint) final tfdata ldata res
  # constant trend
  *
  *   Partial sums --> sums
  *
  acc res tfdata ldata sums
  *
  *   Get sum of partial sums and store in real variable "sum2"
  *
  compute sum2 = 0.0
  do t = tfdata,ldata
   eval sum2 = sum2 + sums(t)*sums(t)
  end do t
  *
  do ikount = 0,lmax
   mcov(damp=1.0,lags=ikount) tfdata ldata res
   # constant
   compute lm = (sum2 / nobs) / %cmom(1,1)
* 
  com kp2(ikount+1) = lm
  end do ikount
*
dis(unit=testout) 'KPSS \begin{tabular}{c}'
dis(unit=testout) '$(l=0)$ \\'
dis(unit=testout) '$(l=1)$ \\'
dis(unit=testout) '$(l=2)$ \\'
dis(unit=testout) '$(l=3)$ \\'
dis(unit=testout) '$(l=4)$ \end{tabular}'
dis(unit=testout) '& -- & \begin{tabular}{l}'
dis(unit=testout) '	$\eta_\mu=' *.## kp1(1) '$ \\'
dis(unit=testout) '	$\eta_\mu=' *.## kp1(2) '$ \\'
dis(unit=testout) '	$\eta_\mu=' *.## kp1(3) '$ \\'
dis(unit=testout) '	$\eta_\mu=' *.## kp1(4) '$ \\'
dis(unit=testout) '	$\eta_\mu=' *.## kp1(5) '$ \end{tabular}'
dis(unit=testout) '	& \begin{tabular}{l}'
dis(unit=testout) '	$\eta_\tau=' *.## kp2(1) '$\\'	
dis(unit=testout) '	$\eta_\tau=' *.## kp2(2) '$\\'
dis(unit=testout) '	$\eta_\tau=' *.## kp2(3) '$\\'
dis(unit=testout) '	$\eta_\tau=' *.## kp2(4) '$\\'
dis(unit=testout) '	$\eta_\tau=' *.## kp2(5) '$ \end{tabular}'
dis(unit=testout) '		& -- & -- \\ \hline'	 

:200
end kpss2
*********************
*********************
* Canova-Hansen
procedure CH
*
option choice det    1 constant trend
option switch texout 0
option switch allinone 0
*
local series res
local series cospi2 sinpi2 cospi cospi2e sinpi2e cospie
local series cospi16 sinpi16 cospi13 sinpi13 cospi12 sinpi12 cospi23 sinpi23
local series cospi56 sinpi56
local series cospi16e sinpi16e cospi13e sinpi13e cospi12e sinpi12e cospi23e
local series sinpi233 cospi563 sinpi563
local vector w w1 ww ww1 w1t wwt ww1t w2 ww2 ww2t w3 ww3 ww3t w4 ww4 ww4t w5 ww5 ww5t ww6 ww6t
local vector[series] F1 F2 F11
local rectangular[real] Api Api2 Api16 Api13 Api12 Api23 Api56 Api22
local rect[real] SS SS1
*
dimension F1(3) F2(11) F11(3)
*
*
*

com Api2 = || 1.0 , 0.0 |$
              0.0 , 1.0 |$
              0.0 , 0.0 ||

com Api = ||  0.0 |$
              0.0 |$
              1.0 ||
*
*
*


com Api16 = || 1.0 , 0.0 |$
               0.0 , 1.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 ||

com Api13 = || 0.0 , 0.0 |$
               0.0 , 0.0 |$
               1.0 , 0.0 |$
               0.0 , 1.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 ||

com Api12 = || 0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               1.0 , 0.0 |$
               0.0 , 1.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 ||

com Api23 = || 0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               1.0 , 0.0 |$
               0.0 , 1.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 ||

com Api56 = || 0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               0.0 , 0.0 |$
               1.0 , 0.0 |$
               0.0 , 1.0 |$
               0.0 , 0.0 ||

com Api22 = ||  0.0 |$
                0.0 |$
                0.0 |$
                0.0 |$
                0.0 |$
                0.0 |$
                0.0 |$
                0.0 |$
                0.0 |$
                0.0 |$
                1.0 ||

*
*ieval tex = texout
*
*
*com nobs = ldata - tfdata +1
*
*
*
if allinone==0
{
display(unit=testout) 'This procedure calculates Canova-Hansen (CH) tests for'
display(unit=testout) 'seasonal stability. Details and critical values are found in Fabio Canova,'
display(unit=testout) 'Bruce E. Hansen, (1995), "Are Seasonal Patterns Constant Over Time? A test'
display(unit=testout) 'for Seasonal Stability", Journal of Business & Economic Statistics, July 1995,'
display(unit=testout) 'Vol. 13, No. 3.'
}
*display(unit=testout) 'Fabio Busetti and Andrew Harvey'
*display(unit=testout) '"Testing against Stochastic Seasonality:'
*display(unit=testout) 'Trends, Breaks ans Partly Periodic Models", (October 2, 2000)'
*
*
*
if (period.eq.1)
{
messagebox(style=alert) 'Sorry?, use Canova-Hansen procedure for quarterly or monthly data only!!! :-('
halt
}
*
if (period.eq.4)
    {
    set trend tfdata ldata = T
    *
    set cospi2 tfdata ldata = cos((%pi/2)*T)
    set sinpi2 tfdata ldata = sin((%pi/2)*T)
    set cospi tfdata ldata = cos(%pi*T)
if allinone==0
{
    dis(unit=testout) ' '
    dis(unit=testout) '*************************************'
    dis(unit=testout) 'Canova-Hansen test: quarterly version'
}
    *
    *
    dim SS(3,3)
    com SS=%const(0.0)
    dim w1(11) ww(11) ww1(11)
    *
    if allinone==1; branch 300
    if det.eq.1
    {
    dis(unit=testout) 'Deterministic Component: Intercept'
    dis(unit=testout) '************************************'
    dis(unit=testout) ' '
    *
    *
    *
    *
    linreg(noprint) final tfdata+1 ldata res
    # constant final{1} cospi2 sinpi2 cospi
    *
    set cospi2e tfdata+1 ldata = cospi2 * res
    set sinpi2e tfdata+1 ldata = sinpi2 * res
    set cospie tfdata+1 ldata = cospi * res
    *
    accumulate cospi2e tfdata+1 ldata F1(1)
    accumulate sinpi2e tfdata+1 ldata F1(2)
    accumulate cospie tfdata+1 ldata F1(3)
    *
    do i=tfdata+1,ldata
    com FT = %xt(F1,i)
    com SST = FT*tr(FT)
    com SS = SS + SST
    end do
    *
    *
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res
        com omega = (1.0/nobs)*%xsubmat(%CMOM,3,5,3,5)
        * Joint Frequencies
        com w1(1+i) = (1.0/(nobs**2.0))*(%trace(inv(omega)*SS))
        *
        * Frequency pi/2 & pi
        *
        com ww(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api2)*(omega*Api2))*(tr(Api2)*(SS*Api2)))
        com ww1(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api)*(omega*Api))*(tr(Api)*(SS*Api)))
        end do i
        *

    *
    }
        if det.eq.2
        {
        dis(unit=testout) 'Deterministic Component: Intercept and trend'
        dis(unit=testout) '********************************************'
        dis(unit=testout) '*'
        *
        *
        *
        linreg(noprint) final tfdata+1 ldata res
        # constant trend final{1} cospi2 sinpi2 cospi
        *
        set cospi2e tfdata+1 ldata = cospi2 * res
        set sinpi2e tfdata+1 ldata = sinpi2 * res
        set cospie tfdata+1 ldata = cospi * res
        *
        accumulate cospi2e tfdata+1 ldata F1(1)
        accumulate sinpi2e tfdata+1 ldata F1(2)
        accumulate cospie tfdata+1 ldata F1(3)
        *
        do i=tfdata+1,ldata
        com FT = %xt(F1,i)
        com SST = FT*tr(FT)
        com SS = SS + SST
        end do
        *
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res
        * Joint Frequencies
        com omega = (1.0/nobs)*%xsubmat(%CMOM,4,6,4,6)
        com w1(1+i) = (1.0/(nobs**2.0))*(%trace(inv(omega)*SS))
        *
        *  Frequency pi/2 & pi
        *
        com ww(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api2)*(omega*Api2))*(tr(Api2)*(SS*Api2)))
        com ww1(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api)*(omega*Api))*(tr(Api)*(SS*Api)))
        end do i
        *
    *
    }
   if texout==0
{ 
        dis(unit=testout) '*******************************************'
        dis(unit=testout) 'Critical values from Von-Mises distribution'
        dis(unit=testout) 'sign-level:    1%     2.5%    5%'
        dis(unit=testout) 'DgF, P=1  :  0.748   0.593   0.470 '
        dis(unit=testout) 'DgF, P=2  :  1.070   0.898   0.749'
        dis(unit=testout) 'DgF, P=3  :  1.350   1.160   1.010'
        dis(unit=testout) '*******************************************'
        dis(unit=testout) ' '
        dis(unit=testout) ' '
        dis(unit=testout) ' '
        dis(unit=testout) 'Canova-Hansen Statistics with lag truncation m'
        dis(unit=testout) '**********************************************'
dis(unit=testout) @2 'LAGS ' @8 ' pi/2 (p=2)'  @20 'pi (p=1)' @29 'Joint (p=3)'
dis(unit=testout) @2 '-----' @8 '-----------'  @20 '--------' @29 '-----------'
dis(unit=testout) @2 ' m=0 ' @10 ##.## ww(1) @20 ##.## ww1(1)  @29 ##.## w1(1)
dis(unit=testout) @2 ' m=1 ' @10 ##.## ww(2) @20 ##.## ww1(2)  @29 ##.## w1(2)
dis(unit=testout) @2 ' m=2 ' @10 ##.## ww(3) @20 ##.## ww1(3)  @29 ##.## w1(3)
dis(unit=testout) @2 ' m=3 ' @10 ##.## ww(4) @20 ##.## ww1(4)  @29 ##.## w1(4)
dis(unit=testout) @2 ' m=4 ' @10 ##.## ww(5) @20 ##.## ww1(5)  @29 ##.## w1(5)
dis(unit=testout) @2 ' m=5 ' @10 ##.## ww(6) @20 ##.## ww1(6)  @29 ##.## w1(6)
dis(unit=testout) @2 ' m=6 ' @10 ##.## ww(7) @20 ##.## ww1(7)  @29 ##.## w1(7)
dis(unit=testout) @2 ' m=7 ' @10 ##.## ww(8) @20 ##.## ww1(8)  @29 ##.## w1(8)
dis(unit=testout) @2 ' m=8 ' @10 ##.## ww(9) @20 ##.## ww1(9)  @29 ##.## w1(9)
dis(unit=testout) @2 ' m=9 ' @10 ##.## ww(10) @20 ##.## ww1(10)  @29 ##.## w1(10)
dis(unit=testout) @2 ' m=10 ' @10 ##.## ww(11) @20 ##.## ww1(11)  @29 ##.## w1(11)
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) '***********************************************************'
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
}
*
if texout==1
    {
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) '\begin{table}'
    dis(unit=testout) '\begin{center}'
    dis(unit=testout) '\caption{Canova-Hansen Test for ' nombre header10 '}'
    dis(unit=testout) '\label{ta:ch' @-1 nombre @-1 '}'
    dis(unit=testout) '\begin{tabular}{c c c c}'
    dis(unit=testout) ' & $\pi/2$ & $\pi$ & Joint \\'
    dis(unit=testout) 'Truncation lag & {\small D}=2 & {\small D}=1 & {\small D}=3 \\'
    dis(unit=testout) '\hline'
    dis(unit=testout) 'm=0 & ' ##.## ww(1) '&' ##.## ww1(1) '&' ##.## w1(1) '\\'
    dis(unit=testout) 'm=1 & ' ##.## ww(2) '&' ##.## ww1(2) '&' ##.## w1(2) '\\'
    dis(unit=testout) 'm=2 & ' ##.## ww(3) '&' ##.## ww1(3) '&' ##.## w1(3) '\\'
    dis(unit=testout) 'm=3 & ' ##.## ww(4) '&' ##.## ww1(4) '&' ##.## w1(4) '\\'
    dis(unit=testout) 'm=4 & ' ##.## ww(5) '&' ##.## ww1(5) '&' ##.## w1(5) '\\'
    dis(unit=testout) 'm=5 & ' ##.## ww(6) '&' ##.## ww1(6) '&' ##.## w1(6) '\\'
    dis(unit=testout) 'm=6 & ' ##.## ww(7) '&' ##.## ww1(7) '&' ##.## w1(7) '\\'
    dis(unit=testout) 'm=7 & ' ##.## ww(8) '&' ##.## ww1(8) '&' ##.## w1(8) '\\'
    dis(unit=testout) 'm=8 & ' ##.## ww(9) '&' ##.## ww1(9) '&' ##.## w1(9) '\\'
    dis(unit=testout) 'm=9 & ' ##.## ww(10) '&' ##.## ww1(10) '&' ##.## w1(10) '\\'
    dis(unit=testout) 'm=10 & ' ##.## ww(11) '&' ##.## ww1(11) '&' ##.## w1(11) '\\'
    dis(unit=testout) '\hline'
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{{\small D}: Brownian Bridge dimension}}\\'
    if (det.eq.1)
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I.}}'
    }
    else if (det.eq.2)
    {
    dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Deterministic: I, Tr.}}'
    }
    dis(unit=testout) '\end{tabular}'
    dis(unit=testout) '\end{center}'
    dis(unit=testout) '\end{table}'
    }
if allinone==0; branch 500
:300
**
dim w1t(11) wwt(11) ww1t(11)
    *
    linreg(noprint) final tfdata+1 ldata res
    # constant final{1} cospi2 sinpi2 cospi
    *
    set cospi2e tfdata+1 ldata = cospi2 * res
    set sinpi2e tfdata+1 ldata = sinpi2 * res
    set cospie tfdata+1 ldata = cospi * res
    *
    accumulate cospi2e tfdata+1 ldata F1(1)
    accumulate sinpi2e tfdata+1 ldata F1(2)
    accumulate cospie tfdata+1 ldata F1(3)
    *
    do i=tfdata+1,ldata
    com FT = %xt(F1,i)
    com SST = FT*tr(FT)
    com SS = SS + SST
    end do
    *
    *
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res
        com omega = (1.0/nobs)*%xsubmat(%CMOM,3,5,3,5)
        * Joint Frequencies
        com w1(1+i) = (1.0/(nobs**2.0))*(%trace(inv(omega)*SS))
        *
        * Frequency pi/2 & pi
        *
        com ww(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api2)*(omega*Api2))*(tr(Api2)*(SS*Api2)))
        com ww1(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api)*(omega*Api))*(tr(Api)*(SS*Api)))
        end do i
        *

    *
        *
        linreg(noprint) final tfdata+1 ldata res1
        # constant trend final{1} cospi2 sinpi2 cospi
        *
        set cospi2e tfdata+1 ldata = cospi2 * res1
        set sinpi2e tfdata+1 ldata = sinpi2 * res1
        set cospie tfdata+1 ldata = cospi * res1
        *
        accumulate cospi2e tfdata+1 ldata F11(1)
        accumulate sinpi2e tfdata+1 ldata F11(2)
        accumulate cospie tfdata+1 ldata F11(3)
        *
        dim SS1(3,3)
        com SS1=%const(0.0)
	*
        do i=tfdata+1,ldata
        com FT1 = %xt(F11,i)
        com SST1 = FT1*tr(FT1)
        com SS1 = SS1 + SST1
        end do
        *
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res1
        * Joint Frequencies
        com omega = (1.0/nobs)*%xsubmat(%CMOM,4,6,4,6)
        com w1t(1+i) = (1.0/(nobs**2.0))*(%trace(inv(omega)*SS1))
        *
        *  Frequency pi/2 & pi
        *
        com wwt(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api2)*(omega*Api2))*(tr(Api2)*(SS1*Api2)))
        com ww1t(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api)*(omega*Api))*(tr(Api)*(SS1*Api)))
        end do i
        *
**
dis(unit=testout) 'CH$(l=6)$(*)& -- & -- & -- &'
dis(unit=testout) '\begin{tabular}{lr}'
dis(unit=testout) '$L_{\pi/2}=$&$' *.## ww(7) '$\\'
dis(unit=testout) '$L_{\pi}=$&$' *.## ww1(7) '$\\'
dis(unit=testout) '$L_f=$&$' *.## w1(7) '$'
dis(unit=testout) '\end{tabular} & \begin{tabular}{c}'
dis(unit=testout) '$' *.## wwt(7) '$\\'
dis(unit=testout) '$' *.## ww1t(7) '$\\'
dis(unit=testout) '$' *.## w1t(7) '$'
dis(unit=testout) '\end{tabular}\\ \hline'
}
*
if period.eq.12
    {
    set trend tfdata ldata = T
    *
    set cospi16 tfdata ldata = cos((%pi/6)*T)
    set sinpi16 tfdata ldata = sin((%pi/6)*T)
    *
    set cospi13 tfdata ldata = cos((%pi/3)*T)
    set sinpi13 tfdata ldata = sin((%pi/3)*T)
    *
    set cospi12 tfdata ldata = cos((%pi/2)*T)
    set sinpi12 tfdata ldata = sin((%pi/2)*T)
    *
    set cospi23 tfdata ldata = cos((2*%pi/3)*T)
    set sinpi23 tfdata ldata = sin((2*%pi/3)*T)
    *
    set cospi56 tfdata ldata = cos((5*%pi/6)*T)
    set sinpi56 tfdata ldata = sin((5*%pi/6)*T)
    *
    set cospi tfdata ldata = cos(%pi*T)
    *
    if allinone==0
    {	
    dis(unit=testout) '***********************************'
    dis(unit=testout) 'Canova-Hansen test: Monthly version'
    }
    *
    *
    dim ww(11) ww1(11) ww2(11) ww3(11) ww4(11) ww5(11) ww6(11)
    dim SS1(11,11)
    com SS1=%const(0.0)
    *
    *
    *
    if allinone==1; branch 400	
    if det.eq.1
        {
        dis(unit=testout) 'Deterministic Component: Intercept'
        dis(unit=testout) '**********************************'
        dis(unit=testout) ' '
        *
        linreg(noprint) final tfdata+1 ldata res
        # constant final{1} cospi16 sinpi16 cospi13 sinpi13 cospi12 sinpi12 cospi23 sinpi23 $
         cospi56 sinpi56 cospi
        *
        set cospi16e tfdata+1 ldata = cospi16 * res
        set sinpi16e tfdata+1 ldata = sinpi16 * res
        *
        set cospi13e tfdata+1 ldata = cospi13 * res
        set sinpi13e tfdata+1 ldata = sinpi13 * res
        *
        set cospi12e tfdata+1 ldata = cospi12 * res
        set sinpi12e tfdata+1 ldata = sinpi12 * res
        *
        set cospi23e tfdata+1 ldata = cospi23 * res
        set sinpi23e tfdata+1 ldata = sinpi23 * res
        *
        set cospi56e tfdata+1 ldata = cospi56 * res
        set sinpi56e tfdata+1 ldata = sinpi56 * res
        *
        set cospie tfdata+1 ldata = cospi * res
        *
        accumulate cospi16e tfdata+1 ldata F2(1)
        accumulate sinpi16e tfdata+1 ldata F2(2)
        accumulate cospi13e tfdata+1 ldata F2(3)
        accumulate sinpi13e tfdata+1 ldata F2(4)
        accumulate cospi12e tfdata+1 ldata F2(5)
        accumulate sinpi12e tfdata+1 ldata F2(6)
        accumulate cospi23e tfdata+1 ldata F2(7)
        accumulate sinpi23e tfdata+1 ldata F2(8)
        accumulate cospi56e tfdata+1 ldata F2(9)
        accumulate sinpi56e tfdata+1 ldata F2(10)
        accumulate cospie tfdata+1 ldata F2(11)
        *
        do i=tfdata+1,ldata
        com FT = %xt(F2,i)
        com SST = FT*tr(FT)
        com SS1 = SS1 + SST
        end do
        *
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res
        *
        com omega = (1.0/nobs)*%xsubmat(%CMOM,3,13,3,13)
        * All Frequencyes
        com ww(1+i) = (1.0/(nobs**2.0))*%trace(inv(omega)*SS1)
        * Frequency PI/6, PI/3, PI/2, 2PI/3, 5PI/6 & PI
com ww1(1+i)=(1.0/(nobs**2.0))*%trace(inv(tr(Api16)*(omega*Api16))*(tr(Api16)*(SS1*Api16)))
com ww2(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api13)*(omega*Api13))*(tr(Api13)*(SS1*Api13)))
com ww3(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api12)*(omega*Api12))*(tr(Api12)*(SS1*Api12)))
com ww4(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api23)*(omega*Api23))*(tr(Api23)*(SS1*Api23)))
com ww5(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api56)*(omega*Api56))*(tr(Api56)*(SS1*Api56)))
com ww6(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api22)*(omega*Api22))*(tr(Api22)*(SS1*Api22)))
      end do i
      *
      *

*
}
    if det.eq.2
        {
        dis(unit=testout) 'Deterministic Component: Intercept and trend'
        dis(unit=testout) '********************************************'
        dis(unit=testout) ' '
        *
        linreg(noprint) final tfdata+1 ldata res
        # constant trend final{1} cospi16 sinpi16 cospi13 sinpi13 cospi12 sinpi12 cospi23 sinpi23 $
         cospi56 sinpi56 cospi
        *
        set cospi16e tfdata+1 ldata = cospi16 * res
        set sinpi16e tfdata+1 ldata = sinpi16 * res
        *
        set cospi13e tfdata+1 ldata = cospi13 * res
        set sinpi13e tfdata+1 ldata = sinpi13 * res
        *
        set cospi12e tfdata+1 ldata = cospi12 * res
        set sinpi12e tfdata+1 ldata = sinpi12 * res
        *
        set cospi23e tfdata+1 ldata = cospi23 * res
        set sinpi23e tfdata+1 ldata = sinpi23 * res
        *
        set cospi56e tfdata+1 ldata = cospi56 * res
        set sinpi56e tfdata+1 ldata = sinpi56 * res
        *
        set cospie tfdata+1 ldata = cospi * res
        *
        accumulate cospi16e tfdata+1 ldata F2(1)
        accumulate sinpi16e tfdata+1 ldata F2(2)
        accumulate cospi13e tfdata+1 ldata F2(3)
        accumulate sinpi13e tfdata+1 ldata F2(4)
        accumulate cospi12e tfdata+1 ldata F2(5)
        accumulate sinpi12e tfdata+1 ldata F2(6)
        accumulate cospi23e tfdata+1 ldata F2(7)
        accumulate sinpi23e tfdata+1 ldata F2(8)
        accumulate cospi56e tfdata+1 ldata F2(9)
        accumulate sinpi56e tfdata+1 ldata F2(10)
        accumulate cospie tfdata+1 ldata F2(11)
        *
        *
        do i=tfdata+1,ldata
        com FT = %xt(F2,i)
        com SST = FT*tr(FT)
        com SS1 = SS1 + SST
        end do
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res
        *
        com omega = (1.0/nobs)*%xsubmat(%CMOM,4,14,4,14)
        * All Frequencyes
        com ww(1+i) = (1.0/(nobs**2.0))*%trace(inv(omega)*SS1)
        * Frequency PI/6, PI/3, PI/2, 2PI/3, 5PI/6 & PI
com ww1(1+i)=(1.0/(nobs**2.0))*%trace(inv(tr(Api16)*(omega*Api16))*(tr(Api16)*(SS1*Api16)))
com ww2(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api13)*(omega*Api13))*(tr(Api13)*(SS1*Api13)))
com ww3(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api12)*(omega*Api12))*(tr(Api12)*(SS1*Api12)))
com ww4(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api23)*(omega*Api23))*(tr(Api23)*(SS1*Api23)))
com ww5(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api56)*(omega*Api56))*(tr(Api56)*(SS1*Api56)))
com ww6(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api22)*(omega*Api22))*(tr(Api22)*(SS1*Api22)))
      end do i
      *
      *
*
}
if texout==0
{
    dis(unit=testout) ' '
    dis(unit=testout) ' '
      dis(unit=testout) 'Critical values from Von-Mises distribution:'
      dis(unit=testout) '*******************************************'
      dis(unit=testout) 'sign-level:    1%      2.5%    5%'
      dis(unit=testout) 'DgF, P=1  :  0.748    0.593   0.470 '
      dis(unit=testout) 'DgF, P=2  :  1.070    0.898   0.749 '
      dis(unit=testout) 'DgF, P=11 :  3.270    2.990   2.750 '
      dis(unit=testout) '*******************************************'
      dis(unit=testout) ' '
      dis(unit=testout) ' '
      dis(unit=testout) 'Canova-Hansen Statistics with lag truncation m:'
      dis(unit=testout) '**********************************************'
dis(unit=testout) @2 'LAGS ' @8 ' pi/6 (p=2)'   @20 'pi/3 (p=2)'  @31 'pi/2 (p=2)' @42 '2pi/3 (p=2)'  @54 '5pi/6 (p=2)' @66 'pi (p=1)'   @75 'Joint (p=11)'
dis(unit=testout) @2 '-----' @8 '-----------'   @20 '----------'  @31 '----------' @42 '-----------'  @54 '-----------' @66 '--------'   @75 '-----------'
dis(unit=testout) @2 ' m=0 ' @10 ##.## ww1(1)    @20 ##.## ww2(1)  @31 ##.## ww3(1) @42 ##.## ww4(1)   @54 ##.## ww5(1)  @66 ##.## ww6(1) @75 ##.## ww(1)
dis(unit=testout) @2 ' m=1 ' @10 ##.## ww1(2)    @20 ##.## ww2(2)  @31 ##.## ww3(2) @42 ##.## ww4(2)   @54 ##.## ww5(2)  @66 ##.## ww6(2) @75 ##.## ww(2)
dis(unit=testout) @2 ' m=2 ' @10 ##.## ww1(3)    @20 ##.## ww2(3)  @31 ##.## ww3(3) @42 ##.## ww4(3)   @54 ##.## ww5(3)  @66 ##.## ww6(3) @75 ##.## ww(3)
dis(unit=testout) @2 ' m=3 ' @10 ##.## ww1(4)    @20 ##.## ww2(4)  @31 ##.## ww3(4) @42 ##.## ww4(4)   @54 ##.## ww5(4)  @66 ##.## ww6(4) @75 ##.## ww(4)
dis(unit=testout) @2 ' m=4 ' @10 ##.## ww1(5)    @20 ##.## ww2(5)  @31 ##.## ww3(5) @42 ##.## ww4(5)   @54 ##.## ww5(5)  @66 ##.## ww6(5) @75 ##.## ww(5)
dis(unit=testout) @2 ' m=5 ' @10 ##.## ww1(6)    @20 ##.## ww2(6)  @31 ##.## ww3(6) @42 ##.## ww4(6)   @54 ##.## ww5(6)  @66 ##.## ww6(6) @75 ##.## ww(6)
dis(unit=testout) @2 ' m=6 ' @10 ##.## ww1(7)    @20 ##.## ww2(7)  @31 ##.## ww3(7) @42 ##.## ww4(7)   @54 ##.## ww5(7)  @66 ##.## ww6(7) @75 ##.## ww(7)
dis(unit=testout) @2 ' m=7 ' @10 ##.## ww1(8)    @20 ##.## ww2(8)  @31 ##.## ww3(8) @42 ##.## ww4(8)   @54 ##.## ww5(8)  @66 ##.## ww6(8) @75 ##.## ww(8)
dis(unit=testout) @2 ' m=8 ' @10 ##.## ww1(9)    @20 ##.## ww2(9)  @31 ##.## ww3(9) @42 ##.## ww4(9)   @54 ##.## ww5(9)  @66 ##.## ww6(9) @75 ##.## ww(9)
dis(unit=testout) @2 ' m=9 ' @10 ##.## ww1(10)    @20 ##.## ww2(10)  @31 ##.## ww3(10) @42 ##.## ww4(10)   @54 ##.## ww5(10)  @66 ##.## ww6(10) @75 ##.## ww(10)
dis(unit=testout) @2 ' m=10 ' @10 ##.## ww1(11)    @20 ##.## ww2(11)  @31 ##.## ww3(11) @42 ##.## ww4(11)   @54 ##.## ww5(11)  @66 ##.## ww6(11) @75 ##.## ww(11)

dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) '************************************************************************************'
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
dis(unit=testout) ' '
}
*
if texout==1
    {
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) ' '
    dis(unit=testout) '\begin{table}'
    dis(unit=testout) '\caption{Canova-Hansen Tests for ' nombre header10 '}'
    dis(unit=testout) '\label{ta:ch' @-1 nombre @-1 '}'
    dis(unit=testout) '\begin{center}'
    dis(unit=testout) '\begin{tabular}{c c c c c c c c}'
    dis(unit=testout) ' & $\pi/6$ & $\pi/3$ & $\pi/2$ & $2 \pi/3$ & $5 \pi/6$ & $\pi$ & Joint \\'
    dis(unit=testout) 'Truncation lag & {\small D}=2 & {\small D}=2 & {\small D}=2 & {\small D}=2 & {\small D}=2 & {\small D}=1 & {\small D}=11 \\'
    dis(unit=testout) '\hline'
    dis(unit=testout) 'm=0 & ' ##.## ww1(1) '&' ##.## ww2(1) '&' ##.## ww3(1) '&' ##.## ww4(1) '&' ##.## ww5(1) '&' ##.## ww6(1) '&' ##.## ww(1) '\\' 
    dis(unit=testout) 'm=1 & ' ##.## ww1(2) '&' ##.## ww2(2) '&' ##.## ww3(2) '&' ##.## ww4(2) '&' ##.## ww5(2) '&' ##.## ww6(2) '&' ##.## ww(2) '\\' 
    dis(unit=testout) 'm=2 & ' ##.## ww1(3) '&' ##.## ww2(3) '&' ##.## ww3(3) '&' ##.## ww4(3) '&' ##.## ww5(3) '&' ##.## ww6(3) '&' ##.## ww(3) '\\'
    dis(unit=testout) 'm=3 & ' ##.## ww1(4) '&' ##.## ww2(4) '&' ##.## ww3(4) '&' ##.## ww4(4) '&' ##.## ww5(4) '&' ##.## ww6(4) '&' ##.## ww(4) '\\'
    dis(unit=testout) 'm=4 & ' ##.## ww1(5) '&' ##.## ww2(5) '&' ##.## ww3(5) '&' ##.## ww4(5) '&' ##.## ww5(5) '&' ##.## ww6(5) '&' ##.## ww(5) '\\'
    dis(unit=testout) 'm=5 & ' ##.## ww1(6) '&' ##.## ww2(6) '&' ##.## ww3(6) '&' ##.## ww4(6) '&' ##.## ww5(6) '&' ##.## ww6(6) '&' ##.## ww(6) '\\'
    dis(unit=testout) 'm=6 & ' ##.## ww1(7) '&' ##.## ww2(7) '&' ##.## ww3(7) '&' ##.## ww4(7) '&' ##.## ww5(7) '&' ##.## ww6(7) '&' ##.## ww(7) '\\'
    dis(unit=testout) 'm=7 & ' ##.## ww1(8) '&' ##.## ww2(8) '&' ##.## ww3(8) '&' ##.## ww4(8) '&' ##.## ww5(8) '&' ##.## ww6(8) '&' ##.## ww(8) '\\'
    dis(unit=testout) 'm=8 & ' ##.## ww1(9) '&' ##.## ww2(9) '&' ##.## ww3(9) '&' ##.## ww4(9) '&' ##.## ww5(9) '&' ##.## ww6(9) '&' ##.## ww(9) '\\'
    dis(unit=testout) 'm=9 & ' ##.## ww1(10) '&' ##.## ww2(10) '&' ##.## ww3(10) '&' ##.## ww4(10) '&' ##.## ww5(10) '&' ##.## ww6(10) '&' ##.## ww(10) '\\'
    dis(unit=testout) 'm=10 & ' ##.## ww1(11) '&' ##.## ww2(11) '&' ##.## ww3(11) '&' ##.## ww4(11) '&' ##.## ww5(11) '&' ##.## ww6(11) '&' ##.## ww(11) '\\'
    dis(unit=testout) '\hline'
    dis(unit=testout) '\multicolumn{8}{l}{\footnotesize{{\small D}: Brownian Bridge dimension}}\\'
    if (det.eq.1)
    {
    dis(unit=testout) '\multicolumn{8}{l}{\footnotesize{Deterministic: I.}}'
    }
    else if (det.eq.2)
    {
    dis(unit=testout) '\multicolumn{8}{l}{\footnotesize{Deterministic: I, Tr}}'
    }
    dis(unit=testout) '\end{tabular}'
    dis(unit=testout) '\end{center}'
    dis(unit=testout) '\end{table}'
    }
if allinone==0; branch 500
:400
 dim wwt(11) ww1t(11) ww2t(11) ww3t(11) ww4t(11) ww5t(11) ww6t(11)
        *
        linreg(noprint) final tfdata+1 ldata res
        # constant final{1} cospi16 sinpi16 cospi13 sinpi13 cospi12 sinpi12 cospi23 sinpi23 $
         cospi56 sinpi56 cospi
        *
        set cospi16e tfdata+1 ldata = cospi16 * res
        set sinpi16e tfdata+1 ldata = sinpi16 * res
        *
        set cospi13e tfdata+1 ldata = cospi13 * res
        set sinpi13e tfdata+1 ldata = sinpi13 * res
        *
        set cospi12e tfdata+1 ldata = cospi12 * res
        set sinpi12e tfdata+1 ldata = sinpi12 * res
        *
        set cospi23e tfdata+1 ldata = cospi23 * res
        set sinpi23e tfdata+1 ldata = sinpi23 * res
        *
        set cospi56e tfdata+1 ldata = cospi56 * res
        set sinpi56e tfdata+1 ldata = sinpi56 * res
        *
        set cospie tfdata+1 ldata = cospi * res
        *
        accumulate cospi16e tfdata+1 ldata F2(1)
        accumulate sinpi16e tfdata+1 ldata F2(2)
        accumulate cospi13e tfdata+1 ldata F2(3)
        accumulate sinpi13e tfdata+1 ldata F2(4)
        accumulate cospi12e tfdata+1 ldata F2(5)
        accumulate sinpi12e tfdata+1 ldata F2(6)
        accumulate cospi23e tfdata+1 ldata F2(7)
        accumulate sinpi23e tfdata+1 ldata F2(8)
        accumulate cospi56e tfdata+1 ldata F2(9)
        accumulate sinpi56e tfdata+1 ldata F2(10)
        accumulate cospie tfdata+1 ldata F2(11)
        *
        do i=tfdata+1,ldata
        com FT = %xt(F2,i)
        com SST = FT*tr(FT)
        com SS1 = SS1 + SST
        end do
        *
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res
        *
        com omega = (1.0/nobs)*%xsubmat(%CMOM,3,13,3,13)
        * All Frequencyes
        com ww(1+i) = (1.0/(nobs**2.0))*%trace(inv(omega)*SS1)
        * Frequency PI/6, PI/3, PI/2, 2PI/3, 5PI/6 & PI
com ww1(1+i)=(1.0/(nobs**2.0))*%trace(inv(tr(Api16)*(omega*Api16))*(tr(Api16)*(SS1*Api16)))
com ww2(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api13)*(omega*Api13))*(tr(Api13)*(SS1*Api13)))
com ww3(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api12)*(omega*Api12))*(tr(Api12)*(SS1*Api12)))
com ww4(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api23)*(omega*Api23))*(tr(Api23)*(SS1*Api23)))
com ww5(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api56)*(omega*Api56))*(tr(Api56)*(SS1*Api56)))
com ww6(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api22)*(omega*Api22))*(tr(Api22)*(SS1*Api22)))
      end do i
      *
      *

*
        *
        linreg(noprint) final tfdata+1 ldata res
        # constant trend final{1} cospi16 sinpi16 cospi13 sinpi13 cospi12 sinpi12 cospi23 sinpi23 $
         cospi56 sinpi56 cospi
        *
        set cospi16e tfdata+1 ldata = cospi16 * res
        set sinpi16e tfdata+1 ldata = sinpi16 * res
        *
        set cospi13e tfdata+1 ldata = cospi13 * res
        set sinpi13e tfdata+1 ldata = sinpi13 * res
        *
        set cospi12e tfdata+1 ldata = cospi12 * res
        set sinpi12e tfdata+1 ldata = sinpi12 * res
        *
        set cospi23e tfdata+1 ldata = cospi23 * res
        set sinpi23e tfdata+1 ldata = sinpi23 * res
        *
        set cospi56e tfdata+1 ldata = cospi56 * res
        set sinpi56e tfdata+1 ldata = sinpi56 * res
        *
        set cospie tfdata+1 ldata = cospi * res
        *
        accumulate cospi16e tfdata+1 ldata F2(1)
        accumulate sinpi16e tfdata+1 ldata F2(2)
        accumulate cospi13e tfdata+1 ldata F2(3)
        accumulate sinpi13e tfdata+1 ldata F2(4)
        accumulate cospi12e tfdata+1 ldata F2(5)
        accumulate sinpi12e tfdata+1 ldata F2(6)
        accumulate cospi23e tfdata+1 ldata F2(7)
        accumulate sinpi23e tfdata+1 ldata F2(8)
        accumulate cospi56e tfdata+1 ldata F2(9)
        accumulate sinpi56e tfdata+1 ldata F2(10)
        accumulate cospie tfdata+1 ldata F2(11)
        *
        *
        com SS1=%const(0.0)
        do i=tfdata+1,ldata
        com FT = %xt(F2,i)
        com SST = FT*tr(FT)
        com SS1 = SS1 + SST
        end do
        *
        do i=0,10
        ieval trunc=i
        mcov(lags=trunc,damp=1.0,lastreg) tfdata+1 ldata res
        *
        com omega = (1.0/nobs)*%xsubmat(%CMOM,4,14,4,14)
        * All Frequencyes
        com wwt(1+i) = (1.0/(nobs**2.0))*%trace(inv(omega)*SS1)
        * Frequency PI/6, PI/3, PI/2, 2PI/3, 5PI/6 & PI
com ww1t(1+i)=(1.0/(nobs**2.0))*%trace(inv(tr(Api16)*(omega*Api16))*(tr(Api16)*(SS1*Api16)))
com ww2t(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api13)*(omega*Api13))*(tr(Api13)*(SS1*Api13)))
com ww3t(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api12)*(omega*Api12))*(tr(Api12)*(SS1*Api12)))
com ww4t(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api23)*(omega*Api23))*(tr(Api23)*(SS1*Api23)))
com ww5t(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api56)*(omega*Api56))*(tr(Api56)*(SS1*Api56)))
com ww6t(1+i) = (1.0/(nobs**2.0))*%trace(inv(tr(Api22)*(omega*Api22))*(tr(Api22)*(SS1*Api22)))
      end do i
      *
dis(unit=testout) 'CH$(l=6)$(*)& -- & -- & -- &'
dis(unit=testout) '\begin{tabular}{lr}'
dis(unit=testout) '$L_{\pi/6}=$&$' *.## ww1(7) '$\\'
dis(unit=testout) '$L_{\pi/3}=$&$' *.## ww2(7) '$\\'
dis(unit=testout) '$L_{\pi/2}=$&$' *.## ww3(7) '$\\'
dis(unit=testout) '$L_{2\pi/3}=$&$' *.## ww4(7) '$\\'
dis(unit=testout) '$L_{5\pi/6}=$&$' *.## ww5(7) '$\\'
dis(unit=testout) '$L_{\pi}=$&$' *.## ww6(7) '$\\'
dis(unit=testout) '$L_f=$&$' *.## ww(7) '$'
dis(unit=testout) '\end{tabular} & \begin{tabular}{c}'
dis(unit=testout) '$' *.## ww1t(7) '$\\'
dis(unit=testout) '$' *.## ww2t(7) '$\\'
dis(unit=testout) '$' *.## ww3t(7) '$\\'
dis(unit=testout) '$' *.## ww4t(7) '$\\'
dis(unit=testout) '$' *.## ww5t(7) '$\\'
dis(unit=testout) '$' *.## ww6t(7) '$\\'
dis(unit=testout) '$' *.## wwt(7) '$'
dis(unit=testout) '\end{tabular}\\ \hline'
      
*
*
}

:500
end CH
*********************
*********************
procedure SURGAT
option choice critg 2 aic bic lb lm gs all
option integer numser 4
*
option switch savegr 0
option switch tex    0
ieval texi=tex
*
compute vd = 0
compute dep_item = 1
compute run_it2 = 2
compute run_it3 = 3
compute run_it4 = 4
compute run_it5 = 5
compute run_it6 = 6
compute run_it7 = 7
compute run_it8 = 8
compute run_it9 = 9
compute run_it10 = 10
compute run_it11 = 11
compute run_it12 = 12
compute run_it13 = 13
compute run_it14 = 14
*
inquire(seasonal) period
*
usermenu(action=define,title='Variables',id=3) $
1>>'Select a variable' $
2>>'Select a transformation' $
3>>'End'
*
usermenu(action=define,title='Graphics',id=2) $
4>>'Actual series' $
5>>'Series without a linear trend' $
6>>'Series without a linear trend and deterministic seasonals' $
7>>'End'
*
usermenu(action=define,title='Tests',id=1) $
8>>'No Component' $
9>>'Intercept ' $
10>>'Intercept and Trend' $
11>>'Intercept and S.Dummies' $
12>>'Intercept, Trend and S.Dummies' $
13>>'All in one' $
14>>'End'
*
 usermenu(action=modify,enable=no) run_it2
 usermenu(action=modify,enable=no) run_it4
 usermenu(action=modify,enable=no) run_it5
 usermenu(action=modify,enable=no) run_it6
 usermenu(action=modify,enable=no) run_it8
 usermenu(action=modify,enable=no) run_it9
 usermenu(action=modify,enable=no) run_it10
 usermenu(action=modify,enable=no) run_it11
 usermenu(action=modify,enable=no) run_it12
 usermenu(action=modify,enable=no) run_it13
*
loop
usermenu
if %menuchoice==1
{
select(series,status=ok,limit=numser) vd
if ok
 {
  usermenu(action=modify,check=yes) dep_item
  inquire(series=vd) fdata ldata
  usermenu(action=modify,enable=yes) run_it2
  *
  query(prompt='Label for the graphics?--') etiq
  compute nombre = etiq
  *
  clear final
  ieval tfdata = fdata
  set final fdata ldata = vd{0}
  *
 usermenu(action=modify,enable=yes) run_it4
 usermenu(action=modify,enable=yes) run_it5
 usermenu(action=modify,enable=yes) run_it6
 usermenu(action=modify,enable=yes) run_it8
 usermenu(action=modify,enable=yes) run_it9
 usermenu(action=modify,enable=yes) run_it10
 usermenu(action=modify,enable=yes) run_it11
 usermenu(action=modify,enable=yes) run_it12
if tex
{
 usermenu(action=modify,enable=yes,id=1) run_it13
}
*
dis(store=HEADER1) nombre
    dis(store=HEADER2) "(original)"
* subtitle of the first graphic:
    dis(store=HEADER3)  header2 
    dis(store=header10) " "
    *
    com pru = "c:\tmp\" + %left(nombre,4)+"-oo"
com titulo = nombre + " " + header2
open(window) testout &titulo

*
graph(header=HEADER1,subheader=HEADER3)
# FINAL tfdata ldata
}
}
if %menuchoice==2
{
inquire(seasonal) period
menu 'Choosing the transformation of the series'
*
choice 'Original'
    {
    cntrl(clear)
    *
    clear final
    ieval tfdata = fdata
    set final fdata ldata = vd{0}
    *
    dis(store=HEADER1) nombre
    dis(store=HEADER2) "(original)"
    dis(store=HEADER3)  header2 
    dis(store=header10) " "
    *
    com pru = "c:\tmp\" + %left(nombre,4)+"-oo"
    }
    *
choice 'first difference of the original'
    {
    clear final
    ieval tfdata = fdata+1
    difference vd tfdata ldata final
    *
    dis(store=HEADER1) nombre
    dis(store=HEADER2) "(first difference)"
    display(store=HEADER3)  header2
    display(store=header10) "first difference"
    *
    com pru = "c:\tmp\" + %left(nombre,4)+"-od"
    *
    }
choice 'Seasonal difference of the original'
    {
    cntrl(clear)
    *
    clear final
    ieval tfdata = fdata+period
    difference(sdiffs=1) vd tfdata ldata final
    *
    display(store=HEADER1) nombre
    display(store=HEADER2) "(Seasonal difference)"
    display(store=HEADER3)   header2
    display(store=header10) "Seasonal difference"
    *
    com pru = "c:\tmp\" + %left(nombre,4)+"-os"
    }

choice 'First and seasonal differences of the original'
    {
    cntrl(clear)
    *
    clear final
    ieval tfdata = fdata+period+1
    difference(diffs=1,sdiffs=1) vd tfdata ldata final
    *
    display(store=HEADER1) nombre
    display(store=HEADER2) "(Regular and seas. differences)"
    display(store=HEADER3)   header2
    display(store=header10) "Regular and seas. differences"
    *
    com pru ="c:\tmp\" + %left(nombre,4)+"-ot"
    }
choice 'Logarithms'
    {
    cntrl(clear)
    *
    clear final
    ieval tfdata=fdata ;*This is necessary when you run two different transformations
    log vd tfdata ldata final
    *
    display(store=HEADER1) nombre
    display(store=HEADER2) "(logarithm)"
    display(store=HEADER3)  header2
    display(store=header10) header2
    *
    com pru = "c:\tmp\" + %left(nombre,4)+"-lo"
    }
choice 'First difference of the logarithm'
    {
    cntrl(clear)
    *
    clear final
    log vd fdata ldata lvd
    *
    ieval tfdata = fdata+1
    difference lvd tfdata ldata final
    *
    display(store=HEADER1) nombre
    display(store=HEADER2) "(First. diff. of the logarithm)"
    display(store=HEADER3)  header2
    display(store=header10) header2
    *
    com pru ="c:\tmp\" + %left(nombre,4)+"-ld"
    }
choice 'Seasonal difference of the logarithm'
    {
    cntrl(clear)
    *
    clear final
    log vd fdata ldata lvd
    *
    ieval tfdata = fdata+period
    difference(sdiffs=1) lvd tfdata ldata final
    *
    display(store=HEADER1) nombre
    display(store=HEADER2) "(Seas. difference of the log.)"
    display(store=HEADER3)  header2
    display(store=header10) "Seas. diff. of the log."
    *
    com pru ="c:\tmp\" + %left(nombre,4)+"-ls"
    }
choice 'First and seasonal differences of the logarithm'
    {
    cntrl(clear)
    *
    clear final
    log vd fdata ldata lvd
    *
    ieval tfdata = fdata+period+1
    difference(diffs=1,sdiffs=1) lvd tfdata ldata final
    *
    display(store=HEADER1) nombre
    display(store=HEADER2) "(Regular and seas. diff. of the log.)"
    display(store=HEADER3)   header2
    display(store=header10) "Regular and seas. diff. of the log."
    *
    com pru = "c:\tmp\" + %left(nombre,4)+"-lt"
    }
end menu
*
com titulo = nombre + " " + header2
open(window) testout &titulo
*
graph(header=HEADER1,subheader=HEADER3)
# FINAL tfdata ldata
  
  usermenu(action=modify,enable=yes) run_it4
  usermenu(action=modify,enable=yes) run_it5
  usermenu(action=modify,enable=yes) run_it8
  usermenu(action=modify,enable=yes) run_it9
  usermenu(action=modify,enable=yes) run_it10
  usermenu(action=modify,enable=yes) run_it11
  usermenu(action=modify,enable=yes) run_it12
if tex==1
{
  usermenu(action=modify,enable=yes) run_it13
}
*
if period<>1
{
  usermenu(action=modify,enable=yes) run_it6
}
*
}
if %menuchoice==4
    {
    cntrl(clear)
    com pru1 = pru + "o"
    *
    ieval nobs = (ldata - tfdata) + 1
    ieval n = %year(ldata)-%year(tfdata)+1
    ***************************************************
    ***************************************************
    display(store=HEADER4) header1
    display(store=HEADER5) "ACF:" nombre
    display(store=HEADER6) "PACF:" nombre
    display(store=HEADER7) "Filters of:"  nombre header2
    display(store=HEADER8) "(Log) Spectrum" 
    display(store=HEADER9)  HEADER1 header2
    *
    select(prompt="Graphics of the series",strings=HEAD,status=OK) SELEC
    if ok
        {
        if selec == 1
            *source(noecho) corr.plo
        @corr(save=savegr) nobs final tfdata ldata pru1 header3 header4 header5 header6 header8
        if selec == 2
            *source(noecho) filtros.plo
        @filtros(save=savegr) pru1 period final tfdata ldata header7
        if selec == 3
            *source(noecho) sesta.plo
        @sesta(save=savegr) tfdata period N final header9 pru1
        if selec == 4
            *source(noecho) sregu.plo
        @sregu(save=savegr) pru1 period N header9 tfdata ldata final
        }
}
if %menuchoice==5
    {
    cntrl(clear)
    com pru1 = pru + "t"
    *
    ieval nobs = (ldata - tfdata) + 1
    ieval n = %year(ldata)-%year(tfdata)+1
    set TREND tfdata ldata = T
    **********  Estimating i efficiently ************
    ***************************************************
    @ar(crit=critg) arbeta
 artstud
    ***********************
    *
    set gFINAL tfdata ldata = final-%beta(1)-%beta(2)*TREND
    *
    display(store=HEADER4) header1 "without trend"
    display(store=HEADER5) "ACF:" nombre "without trend"
    display(store=HEADER6) "PACF:" nombre "without trend"
    display(store=HEADER7) "Filters of:" nombre HEADER2 "without trend"
    display(store=HEADER8) "(Log) Spectrum" 
    display(store=HEADER9) HEADER1 HEADER2 "without trend"
    *
    select(prompt="Graphics of the series without trend",strings=HEAD,status=OK) SELEC
    if ok
        {
        if selec == 1
            *source(noecho) corr.plo
        @corr(save=savegr) nobs gfinal tfdata ldata pru1 header3 header4 header5 header6 header8
        if selec == 2
            *source(noecho) filtros.plo
        @filtros(save=savegr) pru1 period gfinal tfdata ldata header7
        if selec == 3
            *source(noecho) sesta.plo
        @sesta(save=savegr) tfdata period N gfinal header9 pru1
        if selec == 4
            *source(noecho) sregu.plo
        @sregu(save=savegr) pru1 period N header9 tfdata ldata gfinal
        }
}
if %menuchoice==6
    {
    cntrl(clear)
    com pru1 = pru + "d"
    ieval nobs = (ldata - tfdata) + 1
    ieval n = %year(ldata)-%year(tfdata)+1
    *
    set TREND tfdata ldata = T
    @ar(crit=critg) arbeta artstud
    *
    if period == 4
    {
*    com CONSTANTE = %beta(1)
*    com TENDENCIA = %beta(2)
*    com delta1 = %beta(3)
*    com delta2 = %beta(4)
*    com delta3 = %beta(5)

    set dFINAL tfdata ldata = final - %beta(1) - %beta(2) * TREND $
     - %beta(5) * DICI{-1} - %beta(4) * DICI{-2} - %beta(3) * DICI{-3}
    }

    if period == 12
    {
/*
    com CONSTANTE = %beta(1)
    com TENDENCIA = %beta(2)
    com delta1 = %beta(3)
    com delta2 = %beta(4)
    com delta3 = %beta(5)
    com delta4 = %beta(6)
    com delta5 = %beta(7)
    com delta6 = %beta(8)
    com delta7 = %beta(9)
    com delta8 = %beta(10)
    com delta9 = %beta(11)
    com delta10 = %beta(12)
    com delta11 = %beta(13)


    set dFINAL tfdata ldata = final - CONSTANTE - TENDENCIA * TREND - delta11 * DICI{-1} - delta10 * DICI{-2} - delta9 * DICI{-3} $
     - delta8 * DICI{-4} - delta7 * DICI{-5} - delta6 * DICI{-6} - delta5 * DICI{-7} - delta4 * DICI{-8} - delta3 * DICI{-9} $
     -  delta2 * DICI{-10} - delta1 * DICI{-11}
*/
    set dFINAL tfdata ldata = final - %beta(1)-%beta(2)*TREND - %beta(13) * DICI{-1} - $
 %beta(12)* DICI{-2} - %beta(11)*DICI{-3} - %beta(10)*DICI{-4} - %beta(9)*DICI{-5} - $
 %beta(8) * DICI{-6} - %beta(7)*DICI{-7} - %beta(6)*DICI{-8}-%beta(5)*DICI{-9} $
     -  %beta(4)*DICI{-10} - %beta(3)*DICI{-11}
     }
    *
    display(store=HEADER4) nombre "without trend and deterministic seasonality"
    display(store=HEADER5) "ACF:" nombre  "without trend and determ. seasonality"
    display(store=HEADER6) "PACF:" nombre "without trend and determ. seasonality"
    display(store=HEADER7) "Filters of:" nombre header10 "without trend and det. seas."
    display(store=HEADER8) "(Log) Spectrum" 
    display(store=HEADER9) HEADER1 header10 "without trend and det. seas."
    *
    select(prompt="Graphics of the series without trend and determ. seasonality",strings=HEAD,status=OK) SELEC
    if ok
        {
        if selec == 1
            *source(noecho) corr.plo
        @corr(save=savegr) nobs dfinal tfdata ldata pru1 header3 header4 header5 header6 header8
        if selec == 2
            *source(noecho) filtros.plo
        @filtros(save=savegr) pru1 period dfinal tfdata ldata header7
        if selec == 3
            *source(noecho) sesta.plo
        @sesta(save=savegr) tfdata period N dfinal header9 pru1
        if selec == 4
            *source(noecho) sregu.plo
        @sregu(save=savegr) pru1 period N header9 tfdata ldata dfinal
        }
}
if %menuchoice==8
 {
  select(prompt="Tests: No components",strings=HEADi,status=OK) SELEC
  *
  if ok
  {
   if selec==1
   {
    ieval nobs = (ldata - tfdata) + 1
    set TREND tfdata ldata = T
    @ar(crit=critg) arbeta
 artstud
    *
    difference final tfdata+1 ldata dfinal
    linreg(noprint) dfinal tfdata+1+i ldata
    # final{1} dfinal{1 to i}
    *
    exclude(noprint)
    # final{1}
    *
    if %beta(1).gt.0.0
    {
     compute stud = (%cdstat**0.5)
    }
    else
    {
     compute stud= -(%cdstat**0.5)
    }
   *
    if tex 
        {
        dis(unit=testout) '\begin{table}'
        dis(unit=testout) '\caption{Dickey-Fuller Test for ' nombre header10 '}'
        dis(unit=testout) '\label{ta:df' @-1 nombre @-1 '}'
        dis(unit=testout) '\begin{center}'
        dis(unit=testout) '\begin{tabular}{c c c c}'
        dis(unit=testout) 'N. Obs & Ar-lag & Deterministic & Statistic \\'
        dis(unit=testout) '\hline'
        dis(unit=testout) nobs '&' i '& None. &' ##.## stud '\\'
        dis(unit=testout) '\hline'
        dis(unit=testout) '\end{tabular}'
        dis(unit=testout) '\end{center}'
        dis(unit=testout) '\end{table}'
        }
     else
{
    display(unit=testout) 'ADF: '
    display(unit=testout) '***********************************'
    display(unit=testout) ' '
    display(unit=testout) 'Order of the AR lag:....' @27 i
    display(unit=testout) 'ADF statistic:......' @21 stud
    display(unit=testout) 'Number of observations =' @27 nobs
    display(unit=testout) '***********************************'
    display(unit=testout) ' '
    display(unit=testout) 'Critical values from '
    display(unit=testout) 'David A. Dickey & Wayne A. Fuller (1981)'
    display(unit=testout) '"Likelihood ratio statistics for autoregressive'
    display(unit=testout) 'time series with unit root".'
    display(unit=testout) 'Econometrica, Vol. 49, No. 4'
    display(unit=testout) ' '
    display(unit=testout) '      Significance level'
    display(unit=testout) '      ******************'
    display(unit=testout) ' T    0.01   0.05   0.10'
    display(unit=testout) '------------------------'
    display(unit=testout) '100  -2.60  -1.95  -1.61'
    display(unit=testout) '250  -2.58  -1.95  -1.62'
    display(unit=testout) ' '
    display(unit=testout) '************************'
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
} 
	
    clear dfinal trend
   }
   if selec==2
   {
    if period==12
    {
    *HEGY test monthly version
     @mhegy(det=none,crithm=critg,texout=tex,nodseas) tpi F0304 F0506 F0708 F0910 F1112 F0212 F0112 lags hegyc1 hegyt1 hegyobs1
         }
    if period==4
    {
    *HEGY test quarterly version
     @hegyq(det=none,crithq=critg,texout=tex,nodseas) tpi F34 F24 F14 lags hegyqc hegyqt heyqobs1
    }
    if period==1
    {
    messagebox(style=alert) 'Sorry?, only seasonal data!!! :-('
    }
   }
  }
}
 if %menuchoice==9
 {
  select(prompt="Tests: Intercept",strings=HEADii,status=OK) SELEC
  *
  if ok
  {
   if selec==1
   {
    ieval nobs = (ldata - tfdata) + 1
    set TREND tfdata ldata = T
    @ar(crit=critg) arbeta artstud
    difference final tfdata+1 ldata dfinal
    *
    linreg(noprint) dfinal tfdata+1+i ldata
    # constant final{1} dfinal{1 to i}
    *
    exclude(noprint)
    # final{1}
    *
    if %beta(2).gt.0.0
    {
     compute stud = (%cdstat**0.5)
    }
    else
    {
     compute stud= -(%cdstat**0.5)
    }
    *
    if tex
        {
        dis(unit=testout) '\begin{table}'
        dis(unit=testout) '\caption{Dickey-Fuller Test for ' nombre header10 '}'
        dis(unit=testout) '\label{ta:' @-1 nombre @-1 '}'
        dis(unit=testout) '\begin{center}'
        dis(unit=testout) '\begin{tabular}{c c c c}'
        dis(unit=testout) 'N. Obs & Ar-lag & Deterministic & Statistic \\'
        dis(unit=testout) '\hline'
        dis(unit=testout) nobs '&' i '& I. &' ##.## stud '\\'
        dis(unit=testout) '\hline'
        dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{I: Intercept}}'
        dis(unit=testout) '\end{tabular}'
        dis(unit=testout) '\end{center}'
        dis(unit=testout) '\end{table}'
        }
    else
{
    display(unit=testout) 'ADF: model with Intercept '
    display(unit=testout) '*********************************'
    display(unit=testout) ' '
    display(unit=testout) 'Order of the AR lag:....' @27 i
    display(unit=testout) 'ADF statistic:......' @21 stud
    display(unit=testout) 'Number of observations =' @27 nobs
    display(unit=testout) '*********************************'
    display(unit=testout) ' '
    display(unit=testout) 'Critical values from '
    display(unit=testout) 'David A. Dickey & Wayne A. Fuller'
    display(unit=testout) '"Likelihood ratio statistics for autoregressive'
    display(unit=testout) 'time series with unit root".'
    display(unit=testout) 'Econometrica, Vol. 49, No. 4 (July, 1981)'
    display(unit=testout) ' '
    display(unit=testout) '      Significance level'
    display(unit=testout) '      ******************'
    display(unit=testout) ' T    0.01   0.05   0.10'
    display(unit=testout) '------------------------'
    display(unit=testout) '100  -3.51  -2.89  -2.58'
    display(unit=testout) '250  -3.46  -2.89  -2.57'
    display(unit=testout) ' '
    display(unit=testout) '************************'
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
}
	
    clear dfinal trend
   }
   if selec==2
   {
    if period==12
    {
    *HEGY monthly version with intercept
     @mhegy(det=constant,crithm=critg,texout=tex,nodseas) tpi F0304 F0506 F0708 F0910 F1112 F0212 F0112 lags hegyc2 hegyt2 hegyobs2
    }
    if period==4
    {
    *HEGY quarterly version with intercept
     @hegyq(det=constant,crithq=critg,texout=tex,nodseas) tpi F34 F24 F14 lags hegyqc hegyqt heyqobs2
    }
    if period==1
    {
    messagebox(style=alert) 'Sorry?, only seasonal data!!! :-('
    }
   }
   if selec==3
   {
    @kpss2(det=constant,texout=tex)
   }
   }
}
if %menuchoice==10
 {
  select(prompt="Tests: Intercept and Trend",strings=HEADii,status=OK) SELEC
  if ok
  {
   if selec==1
   {
    ieval nobs = (ldata - tfdata) + 1
    set TREND tfdata ldata = T
    @ar(crit=critg) arbeta
 artstud
    difference final tfdata+1 ldata dfinal
    *
    linreg(noprint) dfinal tfdata+1+i ldata
    # constant TREND final{1} dfinal{1 to i}
    *
    exclude(noprint)
    # final{1}
    *
    if %beta(3).gt.0.0
    {
     compute stud = (%cdstat**0.5)
    }
    else
    {
     compute stud= -(%cdstat**0.5)
    }
    *
    if tex
        {
        dis(unit=testout) '\begin{table}'
        dis(unit=testout) '\caption{Dickey-Fuller Test for ' nombre header10 '}'
        dis(unit=testout) '\label{ta:df' @-1 nombre @-1 '}'
        dis(unit=testout) '\begin{center}'
        dis(unit=testout) '\begin{tabular}{ c c c c}'
        dis(unit=testout) 'N. Obs & Ar-lag & Deterministic & Statistic \\'
        dis(unit=testout) '\hline'
        dis(unit=testout) nobs '&' i '& I,Tr. &' ##.## stud '\\'
        dis(unit=testout) '\hline'
        dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{I: Intercept}}'
        dis(unit=testout) '\multicolumn{4}{l}{\footnotesize{Tr: Trend}}'
        dis(unit=testout) '\end{tabular}'
        dis(unit=testout) '\end{center}'
        dis(unit=testout) '\end{table}'
        }
   else
{
    display(unit=testout) 'ADF: model with Intercept and trend '
    display(unit=testout) '***********************************'
    display(unit=testout) ' '
    display(unit=testout) 'Order of the AR lag:....' @27 i
    display(unit=testout) 'ADF statistic:......' @21 stud
    display(unit=testout) 'Number of observations =' @27 nobs
    display(unit=testout) '***********************************'
    display(unit=testout) ' '
    display(unit=testout) 'Critical values from '
    display(unit=testout) 'David A. Dickey & Wayne A. Fuller (1981)'
    display(unit=testout) '"Likelihood ratio statistics for autoregressive'
    display(unit=testout) 'time series with unit root".'
    display(unit=testout) 'Econometrica, Vol. 49, No. 4'
    display(unit=testout) ' '
    display(unit=testout) '      Significance level'
    display(unit=testout) '      ******************'
    display(unit=testout) ' T    0.01   0.05   0.10'
    display(unit=testout) '------------------------'
    display(unit=testout) '100  -4.04  -3.45  -3.15'
    display(unit=testout) '250  -3.99  -3.43  -3.13'
    display(unit=testout) ' '
    display(unit=testout) '************************'
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
    display(unit=testout) ' '
}

    clear dfinal trend
   }
   if selec==2
   {
    if period==12
    {
    *HEGY monthly version with intercept and trend
     @mhegy(det=trend,crithm=critg,texout=tex,nodseas) tpi F0304 F0506 F0708 F0910 F1112 F0212 F0112 lags hegyc3 hegyt3 hegyobs3
    }
   if period==4
   {
    *HEGY quarterly version with intercept and trend
    @hegyq(det=trend,crithq=critg,texout=tex,nodseas) tpi F34 F24 F14 lags hegyqc hegyqt heyqobs3
   }
   if period==1
   {
   messagebox(style=alert) 'Sorry?, only seasonal data!!! :-('
   }
  }
  if selec==3
  {
   @kpss2(det=trend,texout=tex)
  }
 }
}
if %menuchoice==11
 {
  select(prompt="HEGY Tests: Intercept and S. Dummies",strings=HEADIII,status=OK) SELEC
  *
  if ok
  { 
  if selec==1
  {
    if period==12
    {
    *HEGY monthly version with intercept and seasonal dummies
     @mhegy(det=constant,crithm=critg,dseas,texout=tex) tpi F0304 F0506 F0708 F0910 F1112 F0212 F0112 lags hegyc4 hegyt4 hegyobs4
    }
    if period==4
    {

    *HEGY quarterly version with intercept and seasonal dummies
     @hegyq(det=constant,crithq=critg,dseas,texout=tex) tpi F34 F24 F14 lags hegyqc hegyqt heyqobs4
    }
    if period==1
    {
    messagebox(style=alert) 'Sorry?, only seasonal data!!! :-('
    }
  }
  if selec==2
  {
   @CH(det=constant,texout=tex)
  }
  }
}
if %menuchoice==12
 {
  select(prompt="HEGY Tests: Intercept, trend and S. Dummies ",strings=HEADIII,status=OK) SELEC
  if ok
  {
  if selec==1
  {
    if period==12
    {
    *HEGY monthly version with intercept, trend and seasonal dummies
     @mhegy(det=trend,dseas,crithm=critg,texout=tex) tpi F0304 F0506 F0708 F0910 F1112 F0212 F0112 lags hegyc5 hegyt5 hegyobs5
    }
    if period==4
    {
    *HEGY quarterly version with intercept, trend and seasonal dummies
     @hegyq(det=trend,dseas,crithq=critg,texout=tex) tpi F34 F24 F14 lags hegyqc hegyqt heyqobs5
    }
    if period==1
    {
    messagebox(style=alert) 'Sorry?, only seasonal data!!! :-('
    }
  }
  if selec==2
  {
   @CH(det=trend,texout=tex)
  }
}
}
if %menuchoice==13
{
    ieval nobs = (ldata - tfdata) + 1
    set TREND tfdata ldata = T
    @ar(crit=critg) arbeta artstud
    *
    difference final tfdata+1 ldata dfinal
    linreg(noprint) dfinal tfdata+1+i ldata
    # final{1} dfinal{1 to i}
    *
    exclude(noprint)
    # final{1}
    *
    if %beta(1).gt.0.0
    {
     compute stud1 = (%cdstat**0.5)
    }
    else
    {
     compute stud1= -(%cdstat**0.5)
    }
*********1
    *
    linreg(noprint) dfinal tfdata+1+i ldata
    # constant final{1} dfinal{1 to i}
    *
    exclude(noprint)
    # final{1}
    *
    if %beta(2).gt.0.0
    {
     compute stud2 = (%cdstat**0.5)
    }
    else
    {
     compute stud2= -(%cdstat**0.5)
    }
************2
    difference final tfdata+1 ldata dfinal
    *
    linreg(noprint) dfinal tfdata+1+i ldata
    # constant TREND final{1} dfinal{1 to i}
    *
    exclude(noprint)
    # final{1}
    *
    if %beta(3).gt.0.0
    {
     compute stud3 = (%cdstat**0.5)
    }
    else
    {
     compute stud3= -(%cdstat**0.5)
    }
**
dis(unit=testout) '\begin{table}[p] \vspace{-2cm} \caption{Integration vs stationarity tests for ' nombre header10 '}'
dis(unit=testout) '\label{ta:' @-1 nombre @-1 '}'
dis(unit=testout) '\small '
dis(unit=testout) '\centering'
dis(unit=testout) '\['
dis(unit=testout) '\hspace{-2cm}'
dis(unit=testout) '\begin{tabular}{cccccc}'
dis(unit=testout) ' &\multicolumn{5}{c}{Deterministic components} \\ \cline{2-6}'
dis(unit=testout) '    & None & I & I+Tr & I+SD & I+Tr+SD \\\hline'
dis(unit=testout) 'ADF & \begin{tabular}{c} '
dis(unit=testout) '	$t=' *.## stud1 '$\\'
dis(unit=testout) '	$p=' i '$ \\ n.obs= ' nobs ' \end{tabular} & \begin{tabular}{c}'
dis(unit=testout) '				$t=' *.## stud2 '$ \\'
dis(unit=testout) '				$p=' i '$ \\ n.obs=' nobs '\end{tabular} &\begin{tabular}{c}'
dis(unit=testout) '							$t=' *.## stud3 '$ \\'
dis(unit=testout) '							$p=' i '$ \\ n.obs=' nobs '\end{tabular} &-- & --\\ \hline'

@kpss2(allinone)
@CH(allinone)
if period==12
{
@mhegy(det=none,crithm=critg,texout=tex,nodseas,allinone) tpin F0304n F0506n F0708n F0910n F1112n F0212n F0112n lagsn $
 hegyc6 hegyt6 hegyobs6
@mhegy(det=constant,crithm=critg,texout=tex,nodseas,allinone) tpic F0304c F0506c F0708c F0910c F1112c F0212c F0112c lagsc $
 hegyc7 hegyt7 hegyobs7
@mhegy(det=trend,crithm=critg,texout=tex,nodseas,allinone) tpit F0304t F0506t F0708t F0910t F1112t F0212t F0112t lagst $
 hegyc8 hegyt8 hegyobs8
@mhegy(det=constant,crithm=critg,texout=tex,dseas,allinone) tpis F0304s F0506s F0708s F0910s F1112s F0212s F0112s lagss $
 hegyc9 hegyt9 hegyobs9
@mhegy(det=trend,crithm=critg,texout=tex,dseas,allinone) tpix F0304x F0506x F0708x F0910x F1112x F0212x F0112x lagsx $
 hegycoef hegyt hegyobs

dis(unit=testout) 'HEGY \begin{tabular}{l}'
dis(unit=testout) 'n.obs \\'
dis(unit=testout) '$p=$\\'
dis(unit=testout) '$t_1=$\\'
dis(unit=testout) '$t_2=$\\'
dis(unit=testout) '$t_3=$\\'
dis(unit=testout) '$t_4=$\\'
dis(unit=testout) '$t_5=$\\'
dis(unit=testout) '$t_6=$\\'
dis(unit=testout) '$t_7=$\\'
dis(unit=testout) '$t_8=$\\'
dis(unit=testout) '$t_9=$\\'
dis(unit=testout) '$t_{10}=$\\'
dis(unit=testout) '$t_{11}=$\\'
dis(unit=testout) '$t_{12}=$\\'
dis(unit=testout) '$F_{34}=$\\'
dis(unit=testout) '$F_{56}=$\\'
dis(unit=testout) '$F_{78}=$\\'
dis(unit=testout) '$F_{9\,10}=$\\'
dis(unit=testout) '$F_{11\,12}=$\\'
dis(unit=testout) '$F_{2\ldots 12}=$\\'
dis(unit=testout) '$F_{1\ldots 12}=$'
dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' hegyobs6 '$\\'
dis(unit=testout) '$' lagsn '$\\'
dis(unit=testout) '$' *.## tpin(1) '$\\'
dis(unit=testout) '$' *.## tpin(2) '$\\'
dis(unit=testout) '$' *.## tpin(3) '$\\'
dis(unit=testout) '$' *.## tpin(4) '$\\'
dis(unit=testout) '$' *.## tpin(5) '$\\'
dis(unit=testout) '$' *.## tpin(6) '$\\'
dis(unit=testout) '$' *.## tpin(7) '$\\'
dis(unit=testout) '$' *.## tpin(8) '$\\'
dis(unit=testout) '$' *.## tpin(9) '$\\'
dis(unit=testout) '$' *.## tpin(10) '$\\'
dis(unit=testout) '$' *.## tpin(11) '$\\'
dis(unit=testout) '$' *.## tpin(12) '$\\'
dis(unit=testout) '$' *.## F0304n '$\\'
dis(unit=testout) '$' *.## F0506n '$\\'
dis(unit=testout) '$' *.## F0708n '$\\'
dis(unit=testout) '$' *.## F0910n '$\\'
dis(unit=testout) '$' *.## F1112n '$\\'
dis(unit=testout) '$' *.## F0212n '$\\'
dis(unit=testout) '$' *.## F0112n '$\\'

dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' hegyobs7 '$\\'
dis(unit=testout) '$' lagsc '$\\'
dis(unit=testout) '$' *.## tpic(1) '$\\'
dis(unit=testout) '$' *.## tpic(2) '$\\'
dis(unit=testout) '$' *.## tpic(3) '$\\'
dis(unit=testout) '$' *.## tpic(4) '$\\'
dis(unit=testout) '$' *.## tpic(5) '$\\'
dis(unit=testout) '$' *.## tpic(6) '$\\'
dis(unit=testout) '$' *.## tpic(7) '$\\'
dis(unit=testout) '$' *.## tpic(8) '$\\'
dis(unit=testout) '$' *.## tpic(9) '$\\'
dis(unit=testout) '$' *.## tpic(10) '$\\'
dis(unit=testout) '$' *.## tpic(11) '$\\'
dis(unit=testout) '$' *.## tpic(12) '$\\'
dis(unit=testout) '$' *.## F0304c '$\\'
dis(unit=testout) '$' *.## F0506c '$\\'
dis(unit=testout) '$' *.## F0708c '$\\'
dis(unit=testout) '$' *.## F0910c '$\\'
dis(unit=testout) '$' *.## F1112c '$\\'
dis(unit=testout) '$' *.## F0212c '$\\'
dis(unit=testout) '$' *.## F0112c '$\\'


dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' hegyobs8 '$\\'
dis(unit=testout) '$' lagst '$\\'
dis(unit=testout) '$' *.## tpit(1) '$\\'
dis(unit=testout) '$' *.## tpit(2) '$\\'
dis(unit=testout) '$' *.## tpit(3) '$\\'
dis(unit=testout) '$' *.## tpit(4) '$\\'
dis(unit=testout) '$' *.## tpit(5) '$\\'
dis(unit=testout) '$' *.## tpit(6) '$\\'
dis(unit=testout) '$' *.## tpit(7) '$\\'
dis(unit=testout) '$' *.## tpit(8) '$\\'
dis(unit=testout) '$' *.## tpit(9) '$\\'
dis(unit=testout) '$' *.## tpit(10) '$\\'
dis(unit=testout) '$' *.## tpit(11) '$\\'
dis(unit=testout) '$' *.## tpit(12) '$\\'
dis(unit=testout) '$' *.## F0304t '$\\'
dis(unit=testout) '$' *.## F0506t '$\\'
dis(unit=testout) '$' *.## F0708t '$\\'
dis(unit=testout) '$' *.## F0910t '$\\'
dis(unit=testout) '$' *.## F1112t '$\\'
dis(unit=testout) '$' *.## F0212t '$\\'
dis(unit=testout) '$' *.## F0112t '$\\'

dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' hegyobs9 '$\\'
dis(unit=testout) '$' lagss '$\\'
dis(unit=testout) '$' *.## tpis(1) '$\\'
dis(unit=testout) '$' *.## tpis(2) '$\\'
dis(unit=testout) '$' *.## tpis(3) '$\\'
dis(unit=testout) '$' *.## tpis(4) '$\\'
dis(unit=testout) '$' *.## tpis(5) '$\\'
dis(unit=testout) '$' *.## tpis(6) '$\\'
dis(unit=testout) '$' *.## tpis(7) '$\\'
dis(unit=testout) '$' *.## tpis(8) '$\\'
dis(unit=testout) '$' *.## tpis(9) '$\\'
dis(unit=testout) '$' *.## tpis(10) '$\\'
dis(unit=testout) '$' *.## tpis(11) '$\\'
dis(unit=testout) '$' *.## tpis(12) '$\\'
dis(unit=testout) '$' *.## F0304s '$\\'
dis(unit=testout) '$' *.## F0506s '$\\'
dis(unit=testout) '$' *.## F0708s '$\\'
dis(unit=testout) '$' *.## F0910s '$\\'
dis(unit=testout) '$' *.## F1112s '$\\'
dis(unit=testout) '$' *.## F0212s '$\\'
dis(unit=testout) '$' *.## F0112s '$\\'

dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' hegyobs '$\\'
dis(unit=testout) '$' lagsx '$\\'
dis(unit=testout) '$' *.## tpix(1) '$\\'
dis(unit=testout) '$' *.## tpix(2) '$\\'
dis(unit=testout) '$' *.## tpix(3) '$\\'
dis(unit=testout) '$' *.## tpix(4) '$\\'
dis(unit=testout) '$' *.## tpix(5) '$\\'
dis(unit=testout) '$' *.## tpix(6) '$\\'
dis(unit=testout) '$' *.## tpix(7) '$\\'
dis(unit=testout) '$' *.## tpix(8) '$\\'
dis(unit=testout) '$' *.## tpix(9) '$\\'
dis(unit=testout) '$' *.## tpix(10) '$\\'
dis(unit=testout) '$' *.## tpix(11) '$\\'
dis(unit=testout) '$' *.## tpix(12) '$\\'
dis(unit=testout) '$' *.## F0304x '$\\'
dis(unit=testout) '$' *.## F0506x '$\\'
dis(unit=testout) '$' *.## F0708x '$\\'
dis(unit=testout) '$' *.## F0910x '$\\'
dis(unit=testout) '$' *.## F1112x '$\\'
dis(unit=testout) '$' *.## F0212x '$\\'
dis(unit=testout) '$' *.## F0112x '$\\'

dis(unit=testout) '\end{tabular} \\ \hline'
dis(unit=testout) '\multicolumn{6}{l}{\footnotesize{(*) The dimensions of the Brownian Bridges are $D=2$ for $L_{\pi/6}$ to $L_{5\pi/6}$, $D=1$ for $L_\pi$ and}}\\'
dis(unit=testout) '\multicolumn{6}{l}{\footnotesize{$D=11$ for $L_f$}}\\'
dis(unit=testout) '\multicolumn{6}{l}{\footnotesize{I: Intercept; Tr: Linear trend; SD: Seasonal dummies.}}'
dis(unit=testout) '\end{tabular}'
dis(unit=testout) '\]'
dis(unit=testout) '\end{table}'

dis(unit=testout) '\begin{table}[p] \caption{Deterministic components}'
dis(unit=testout) '\label{ta:' @-1 nombre @-1 'det}'
dis(unit=testout) '\centering'
dis(unit=testout) '\['
dis(unit=testout) '\begin{tabular}{|l|rr|rr|} \cline{2-5} '
dis(unit=testout) '\multicolumn{1}{c|}{$ $} & \multicolumn{2}{c|}{AR ($y_t$)} & \multicolumn{2}{c|}{ECM ($\Delta_{12}y_t$)} \\ \cline{2-5}'
dis(unit=testout) '\multicolumn{1}{c|}{$ $} & Coeff. & t-stat & Coeff. & t-stat \\ \hline'
dis(unit=testout) 'Constant &' *.## arbeta(1) '&' *.## artstud(1) '&' *.## hegycoef(1) '&' *.## hegyt(1) '\\'
dis(unit=testout) 'Trend &' *.## arbeta(2) '&' *.## artstud(2) '&' *.## hegycoef(2) '&' *.## hegyt(2) '\\'
dis(unit=testout) 'S1&' *.## arbeta(3) '&' *.## artstud(3) '&' *.## hegycoef(3) '&' *.## hegyt(3) '\\'
dis(unit=testout) 'S2&' *.## arbeta(4) '&' *.## artstud(4) '&' *.## hegycoef(4) '&' *.## hegyt(4) '\\'
dis(unit=testout) 'S3&' *.## arbeta(5) '&' *.## artstud(5) '&' *.## hegycoef(5) '&' *.## hegyt(5) '\\'
dis(unit=testout) 'S4&' *.## arbeta(6) '&' *.## artstud(6) '&' *.## hegycoef(6) '&' *.## hegyt(6) '\\'
dis(unit=testout) 'S5&' *.## arbeta(7) '&' *.## artstud(7) '&' *.## hegycoef(7) '&' *.## hegyt(7) '\\'
dis(unit=testout) 'S6&' *.## arbeta(8) '&' *.## artstud(8) '&' *.## hegycoef(8) '&' *.## hegyt(8) '\\'
dis(unit=testout) 'S7&' *.## arbeta(9) '&' *.## artstud(9) '&' *.## hegycoef(9) '&' *.## hegyt(9) '\\'
dis(unit=testout) 'S8&' *.## arbeta(10) '&' *.## artstud(10) '&' *.## hegycoef(10) '&' *.## hegyt(10) '\\'
dis(unit=testout) 'S9&' *.## arbeta(11) '&' *.## artstud(11) '&' *.## hegycoef(11) '&' *.## hegyt(11) '\\'
dis(unit=testout) 'S10&' *.## arbeta(12) '&' *.## artstud(12) '&' *.## hegycoef(12) '&' *.## hegyt(12) '\\'
dis(unit=testout) 'S11&' *.## arbeta(13) '&' *.## artstud(13) '&' *.## hegycoef(13) '&' *.## hegyt(13) '\\ \hline'
dis(unit=testout) 'lags &' orderp '&'  '&' lagsx '&' '\\ '
dis(unit=testout) 'n.obs &' nobsar '&'  '&' hegyobs '&' '\\ \hline'
dis(unit=testout) '\end{tabular}'
dis(unit=testout) '\]'
dis(unit=testout) '\end{table}'

}
if period==4
{
@hegyq(det=none,crithq=critg,texout=tex,nodseas,allinone) tpin F34n F24n F14n $ 
 lagsn hegyqc1 hegyqt1 heyqobs6
@hegyq(det=constant,crithq=critg,texout=tex,nodseas,allinone) tpic F34c F24c F14c $ 
 lagsc hegyqc2 hegyqt2 heyqobs7
@hegyq(det=trend,crithq=critg,texout=tex,nodseas,allinone) tpit F34t F24t F14t $ 
 lagst hegyqc3 hegyqt3 heyqobs8
@hegyq(det=constant,crithq=critg,texout=tex,dseas,allinone) tpis F34s F24s F14s $
 lagss hegyqc4 hegyqt4 heyqobs9
@hegyq(det=trend,crithq=critg,texout=tex,dseas,allinone) tpix F34x F24x F14x $ 
 lagsx hegyqc5 hegyqt5 heyqob10

dis(unit=testout) 'HEGY \begin{tabular}{l}'
dis(unit=testout) 'n.obs. \\'
dis(unit=testout) '$p=$\\'
dis(unit=testout) '$t_1=$\\'
dis(unit=testout) '$t_2=$\\'
dis(unit=testout) '$t_3=$\\'
dis(unit=testout) '$t_4=$\\'
dis(unit=testout) '$F_{34}=$\\'
dis(unit=testout) '$F_{2\ldots 4}=$\\'
dis(unit=testout) '$F_{1\ldots 4}=$'
dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' heyqobs6 '$\\'
dis(unit=testout) '$' lagsn '$\\'
dis(unit=testout) '$' *.## tpin(1) '$\\'
dis(unit=testout) '$' *.## tpin(2) '$\\'
dis(unit=testout) '$' *.## tpin(3) '$\\'
dis(unit=testout) '$' *.## tpin(4) '$\\'
dis(unit=testout) '$' *.## F34n '$\\'
dis(unit=testout) '$' *.## F24n '$\\'
dis(unit=testout) '$' *.## F14n '$\\'

dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' heyqobs7 '$\\'
dis(unit=testout) '$' lagsc '$\\'
dis(unit=testout) '$' *.## tpic(1) '$\\'
dis(unit=testout) '$' *.## tpic(2) '$\\'
dis(unit=testout) '$' *.## tpic(3) '$\\'
dis(unit=testout) '$' *.## tpic(4) '$\\'
dis(unit=testout) '$' *.## F34c '$\\'
dis(unit=testout) '$' *.## F24c '$\\'
dis(unit=testout) '$' *.## F14c '$\\'


dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' heyqobs8 '$\\'
dis(unit=testout) '$' lagst '$\\'
dis(unit=testout) '$' *.## tpit(1) '$\\'
dis(unit=testout) '$' *.## tpit(2) '$\\'
dis(unit=testout) '$' *.## tpit(3) '$\\'
dis(unit=testout) '$' *.## tpit(4) '$\\'
dis(unit=testout) '$' *.## F34t '$\\'
dis(unit=testout) '$' *.## F24t '$\\'
dis(unit=testout) '$' *.## F14t '$\\'

dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' heyqobs9 '$\\'
dis(unit=testout) '$' lagss '$\\'
dis(unit=testout) '$' *.## tpis(1) '$\\'
dis(unit=testout) '$' *.## tpis(2) '$\\'
dis(unit=testout) '$' *.## tpis(3) '$\\'
dis(unit=testout) '$' *.## tpis(4) '$\\'
dis(unit=testout) '$' *.## F34s '$\\'
dis(unit=testout) '$' *.## F24s '$\\'
dis(unit=testout) '$' *.## F14s '$\\'

dis(unit=testout) '\end{tabular} & \begin{tabular}{r}'
dis(unit=testout) '$' heyqob10 '$\\'
dis(unit=testout) '$' lagsx '$\\'
dis(unit=testout) '$' *.## tpix(1) '$\\'
dis(unit=testout) '$' *.## tpix(2) '$\\'
dis(unit=testout) '$' *.## tpix(3) '$\\'
dis(unit=testout) '$' *.## tpix(4) '$\\'
dis(unit=testout) '$' *.## F34x '$\\'
dis(unit=testout) '$' *.## F24x '$\\'
dis(unit=testout) '$' *.## F14x '$\\'

dis(unit=testout) '\end{tabular} \\ \hline'
dis(unit=testout) '\multicolumn{6}{l}{\footnotesize{(*) The dimensions of the Brownian Bridges are $D=2$ for $L_{\pi/2}$, $D=1$ for $L_\pi$ and $D=3$ for $L_f$ }}\\' 
dis(unit=testout) '\multicolumn{6}{l}{\footnotesize{I: Intercept; Tr: Linear trend; SD: Seasonal dummies.}}'
dis(unit=testout) '\end{tabular}'
dis(unit=testout) '\]'
dis(unit=testout) '\end{table}'

dis(unit=testout) '\begin{table}[p] \caption{Deterministic components}'
dis(unit=testout) '\label{ta:' @-1 nombre @-1 'det}'
dis(unit=testout) '\centering'
dis(unit=testout) '\['
dis(unit=testout) '\begin{tabular}{|l|rr|rr|} \cline{2-5} '
dis(unit=testout) '\multicolumn{1}{c|}{$ $} & \multicolumn{2}{c|}{AR ($y_t$)} & \multicolumn{2}{c|}{ECM $\Delta_4y_t$}\\ \cline{2-5}'
dis(unit=testout) '\multicolumn{1}{c|}{$ $} & Coeff. & t-stat & Coeff. & t-stat \\ \hline'
dis(unit=testout) 'Constant &' *.## arbeta(1) '&' *.## artstud(1) '&' *.## hegyqc5(1) '&' *.## hegyqt5(1) '\\'
dis(unit=testout) 'Trend &' *.## arbeta(2) '&' *.## artstud(2) '&' *.## hegyqc5(2) '&' *.## hegyqt5(2) '\\'
dis(unit=testout) 'S1&' *.## arbeta(3) '&' *.## artstud(3) '&' *.## hegyqc5(3) '&' *.## hegyqt5(3) '\\'
dis(unit=testout) 'S2&' *.## arbeta(4) '&' *.## artstud(4) '&' *.## hegyqc5(4) '&' *.## hegyqt5(4) '\\'
dis(unit=testout) 'S3&' *.## arbeta(5) '&' *.## artstud(5) '&' *.## hegyqc5(5) '&' *.## hegyqt5(5) '\\ \hline'
dis(unit=testout) 'lags &' orderp '&'  '&' lagsx '&' '\\ '
dis(unit=testout) 'n.obs &' nobsar '&'  '&' heyqob10 '&' '\\ \hline'
dis(unit=testout) '\end{tabular}'
dis(unit=testout) '\]'
dis(unit=testout) '\end{table}'



*****
}
}
if %menuchoice==3 .or. %menuchoice==7 .or. %menuchoice==14
break
end loop
usermenu(action=remove)
*
end SURGAT