Page 1 of 1

Seasonal Unit root test

Posted: Fri May 15, 2009 5:24 am
by tcfoon
Hello there!

I would like to known whether the way I am writing the programme for seasonal unit root test developed by Beaulieu and Miron (1993) are correct? Particularly, in the generated series section.

Genr trend = @trend
Series D12Y = D(Y,0,12)
Series Y1 = Y + Y(-1) + Y(-2) + Y(-3) + Y(-4) + Y(-5) + Y(-6) + Y(-7) + Y(-8) + Y(-9) + Y(-10) + Y(-11)
Series Y2 = - Y + Y(-1) - Y(-2) + Y(-3) - Y(-4) + Y(-5) - Y(-6) + Y(-7) - Y(-8) + Y(-9) - Y(-10) + Y(-11)
Series Y3 = - Y(-1) + y(-3) - Y(-5) + Y(-7) - Y(-9) + Y(-11)
Series Y4 = - Y + Y(-2) - Y(-4) + Y(-6) - Y(-8) + Y(-10)
Series Y5 = 0.5*(- Y - Y(-1) + 2*Y(-2) - Y(-3) - Y(-4) + 2*Y(-5) - Y(-6) - Y(-7) + 2*Y(-8) - Y(-9) - Y(-10) + 2*Y(-11))
Series Y6 = (@sqrt(3)/2)*(Y - Y(-1) + Y(-3) - Y(-4) + Y(-6) - Y(-7) + Y(-9) - Y(-10))
Series Y7 = 0.5*(Y - Y(-1) - 2*Y(-2) - Y(-3) + Y(-4) + 2*Y(-5) + Y(-6) - Y(-7) - 2*Y(-8) - Y(-9) + Y(-10) + 2*Y(-11))
Series Y8 = (@sqrt(3)/2)*(Y - Y(-1) + Y(-3) + Y(-4) - Y(-6) - Y(-7) + Y(-9) + Y(-10))
Series Y9 = 0.5*(- @sqrt(3)*Y + Y(-1) - Y(-3) + @sqrt(3)*Y(-4) - 2*Y(-5) + @sqrt(3)*Y(-6) - Y(-7) + Y(-9) - @sqrt(3)*Y(-10) + 2*Y(-11))
Series Y10 = 0.5*(Y - @sqrt(3)*Y(-1) + 2*y(-2) - @sqrt(3)*y(-3) + y(-4) - y(-6) + @sqrt(3)*y(-7) - 2*y(-8) + @sqrt(3)*y(-9) - y(-10))
Series Y11 = 0.5*(@sqrt(3)*Y + Y(-1) - Y(-3) - @sqrt(3)*Y(-4) - 2*Y(-5) - @sqrt(3)*Y(-6) - Y(-7) + Y(-9) + @sqrt(3)*Y(-10) + 2*Y(-11))
Series Y12 = 0.5*(- Y - @sqrt(3)*Y(-1) - 2*Y(-2) - @sqrt(3)*Y(-3) - y(-4) + Y(-6) + @sqrt(3)*Y(-7) + 2*y(-8) + @sqrt(3)*Y(-9) + Y(-10))

'create seasonal dummies
for !i=1 to 11
series s!i = @seas(!i) - @seas(12)
next

EQUATION EQ.LS D12Y Y1(-1) Y2(-1) Y3(-1) Y4(-1) Y5(-1) Y6(-1) Y7(-1) Y8(-1) Y9(-1) Y10(-1) Y11(-1) Y12(-1) C TREND S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 D12Y(-1 to -12)

Thank you,

Regards,
tcfoon

Re: Seasonal Unit root test

Posted: Fri May 15, 2009 5:35 am
by trubador
There is a programming example of seasonal unit root testing (i.e. HEGY) for monthly series in the "Program Repository" section of the forum. You may want to check it for comparison purposes. Here is the direct link: http://forums.eviews.com/viewtopic.php?f=15&t=301

Re: Seasonal Unit root test

Posted: Fri May 15, 2009 11:20 pm
by tcfoon
Hi,

Thank you for the information, I have go through the suggested command but that is for Franses (1991) seasonal unit root test for monthly data. In fact, I am looking for Beaulieu and Miron (1993) seasonal unit root test for monthly data. My concern is whether I am correctly generate the data for Y1, Y2,...Y3 or not. In fact, I do test the suggested command, but the output is far away different from JMulti, in addition, my Beaulieu and Miron (1993) output also differ from RATS output. Therefore, I am not sure whether the way I am generating the Y series is correct or not.

Thank you,

Regards,
tcfoon

Re: Seasonal Unit root test

Posted: Sun May 17, 2009 10:57 pm
by tcfoon
Hello!!

I have slightly improved the exiting sub-routine in the Eview forum for monthly seasonal unit root tests. My question is that is it plausible to ask Eviews to run the sub-routine for each series in a group and how is the programme. I saw an ADF programme work in this way but I am not sure how to incorporate into my sub-routine programme then work by the “call” command. The programe is as follow:

group g *
g.drop resid 'put every series in the workfile into a group
table ADF

for !i=1 to g.@count 'loop through every series in the first group
%name = g.@seriesname(!i) 'grab the current series name

uroot(adf, const, dif=0,save=level1) {%name}
ADF(1,1+!i)=%name
ADF(2, 1+!i)= level1(3,1)'
uroot(adf, trend, dif=0,save=level2) {%name}
ADF(3, 1+!i)= level2(3,1)
next

Please advice

Thank you,

Regards,
tcfoon

Re: Seasonal Unit root test

Posted: Mon May 18, 2009 12:00 am
by trubador
You can either modify the argument in the subroutine and change it to a group instead of series or you can simply define another loop in the program outside the subroutine:

Code: Select all

for !j = 1 to mygroup.@count call hegyf(myggroup(!j)) table info!j = info_criterion next subroutine hegyf(series y) ....... endsub

Re: Seasonal Unit root test

Posted: Mon May 18, 2009 3:22 am
by tcfoon
Sorry, what I mean is running the seasonal unit root test for each series in a group. Is it plausible??

Thank in advance

Re: Seasonal Unit root test

Posted: Mon May 18, 2009 4:43 am
by trubador
Yes, I think so. I do not see any reason why it would be implausible.

Re: Seasonal Unit root test

Posted: Mon May 18, 2009 5:57 am
by tcfoon
Thank you very much just now I re-try again and the code is running.

Thank you very much...and the Eviews forum is very useful to enhance my knowledge and sharing..

Re: Seasonal Unit root test

Posted: Wed Jun 01, 2011 3:47 am
by raquelopez
Hi "tcfoon",

I have just gone through this topic. So, regarding the programming for the test developed by Beaulieu and Miron (1993) that you included at the beginning of this post, is it then the final version of the test or did you include any further modification? I´m not sure but I think the file that you attached later in this post is about Franses(1991). Am I right?

Thank you very much for sharing your programming with other people,
Raquel

Re: Seasonal Unit root test

Posted: Sat Jun 04, 2011 8:43 am
by raquelopez
Hi again,
I have a new question. Please, could you tell me the reason of subtracting the dummy variable corresponding to December in "series s!i = @seas(!i) - @seas(12)"?
Thanks,
Raquel

Re: Seasonal Unit root test

Posted: Tue Aug 04, 2015 12:59 am
by somegek
It is a bit late to reply after 6 years, but here might be the reason why your results are different from other programs.
your Series Y8 = (@sqrt(3)/2)*(Y - Y(-1) + Y(-3) + Y(-4) - Y(-6) - Y(-7) + Y(-9) + Y(-10))
This Y should be a -y, because you let out the - sign from the sqrt(3)/2
There might be other possible errors, but the formula are not exactly the same as the paper, which I mean the sign - is often combined in the formula, make it harder to read the code.

On the other hand, someone asked about why the seasonal dummies is seas(i)-seas(12). This can be viewed as the seasonal dummies and their deviation from the mean of the dummies.
Consider Seas(i), for i not 12, then the effect of the dummies is constant + seas(i). When i=12, the effect of the dummies will be constant - sum(dummies(i = 1 to 11)). This also means the 12th month seasonal dummy is - sum(dummies(i=1 to 11)).
Now consider the mean of all seasonal dummies, the seasonal dummies will cancel each other out, leaving only the mean of the constant over, which is a constant. This leads to the constant in this equation equals the constant of the seasonal adjusted series.

Hope this helps the other people who are also facing the seasonal unit root.

Please notify me if I'm wrong.