Page 1 of 1

how to specify random walk with ARMA(2,2)

Posted: Sat Feb 25, 2012 10:06 pm
by hardmann
Dear Tom:

In calssical Clark(1987) model, (1) Yt=Tt+Ct, (2) Tt=Tt-1 + dt-1 + nt, (3) dt= dt-1 + ut, (4) PHI(L)Ct = et. Clark said this model can not be identified if depentence of int and et.
In Morrly Nelson Zvoit(2003), they just estimated UC-AR(2) rather than UC-AEMA(2,2).
Can we delete eq(3) in Clark model, and extend PHI(L) Ct to ARMA(2,2) to setup typically UC model as follows:
UC model with arma(2,2): (i) Yt=Tt+Ct, (ii) Tt=Tt-1 + u + nt, (iii) Ct - phi1*Ct-1 - phi2*Ct-2 = et + theta1*et-1 + theta2*et-2
how to specify it. I dont know thether model can be identified if independence between nt and et.

Thanks
Hardmann

Re: how t specify random walk with ARMA(2,2)

Posted: Sun Feb 26, 2012 11:25 am
by TomDoan
You might want to look at:

http://faculty.washington.edu/ezivot/re ... 162006.pdf

which extends the MNZ analysis to Clark's double drift model. The use of an ARMA rather than AR for the cycle shouldn't be of real consequence. However, an ARMA(2,2) for the cycle is likely to be overparameterized.

Re: how to specify random walk with ARMA(2,2)

Posted: Thu Mar 01, 2012 9:59 pm
by hardmann
Dear Tom:

I had read this paper that estimate double drifts. I also had read another paper "The Clark Model with Correlated Components," with Kum Hwa Oh. January, which estimate UC-ARMA(2,1) with Correlated Components
I slightly modefied MZN's UC-AR(2) to UC-ARMA(2,1) based on previous paper. I modified af,zf,f matrics.
However, I encounter problem. "## MAT6. Trying to Store 2 x 2 Matrix Into VECTOR "
I do not know which is 2 x 2 Matrix. When I estimate UC-arma(2,1) even Uc-arma(2,2) without correlated components, estimation are rightly worked but coef. of MA insignificent.

Code: Select all

open data lgdp.txt
calendar(q) 1947
data(format=free,org=columns) 1947:01 1998:02 lgdp
set lgdp = 100.0*lgdp


* UC-Ur decomposition with ARMA(2,1) cycle, fixed trend rate.

nonlin mu sn ph1 ph2 th1 se rho
*
dec frml[rect] af
dec frml[vect] zf
dec frml[symm] swf
*
frml af = ||1.0,0.0,0.0,0.0|$
            0.0,ph1,ph2,th1|$
            0.0,1.0,0.0,0.0|$
            0.0,0.0,0.0,0.0||
frml zf = ||mu,0.0,0.0,0.0||
frml swf = %diag(||sn^2|rho*sn*se,se^2||)
*
compute [vect] c=||1.0,1.0,0.0,0.0||

compute [rect] f=||1.0,0.0|$
                   0.0,1.0|$
                   0.0,0.0|$
                   0.0,1.0||
*
* Get initial guess values

filter(type=hp) lgdp / gdp_hp
set gap_hp = lgdp - gdp_hp

linreg gap_hp
# gap_hp{1 2}

compute ph1=%beta(1),ph2=%beta(2),se=sqrt(%seesq)
set trend = t

linreg gdp_hp
# constant trend

compute mu=%beta(2)
compute sn=sqrt(.1*%seesq)
compute th1=0.0
compute rho=0.0
*
dlm(presample=ergodic,a=af,z=zf,sw=swf,c=c,f=f,y=lgdp,method=bfgs,type=filter) / states0
*
*set cycle0 = states0(t)(2)
*set trend0 = states0(t)(1)
*
Regards
Hardmann