Page 1 of 1

Estimation of AR(2) with t-student

Posted: Thu Nov 28, 2013 10:02 am
by Chuse
Dear all,

I am new with Eviews and i have no idea how to implement it. I would like to estimate an AR(2) with ML method and errors a t-distribution with 3 degree of freedom.
The same with errors distribution N(0,3).

Thank you beforehand.
Chuse.

Re: Estimation of AR(2) with t-student

Posted: Thu Nov 28, 2013 2:12 pm
by trubador
There is nothing built-in. You need to write a program using the LogL object and/or the Optimize command. You can work on the following code that I've just cooked up:

Code: Select all

'Maximum likelihood estimation of AR(2) model with t-distributed errors 'Create a workfile wfcreate ar2model u 250 'Generate a series that follows an AR(2) process !rho1 = 0.6 !rho2 = 0.3 !dof = 3 smpl @first @first+1 series y=0 smpl @first+2 @last y = !rho1*y(-1) + !rho2*y(-2) + @rtdist(!dof) 'Declare coefficent vectors and assign initial values coef(2) rho = .5 coef(1) dof = 2 coef(1) var = 1 !pi = @acos(-1) 'Initialize presample values smpl @first @first+1 series res = 0 'Set up logl object logl ar2t ar2t.append @logl maxlik ar2t.append res = y - rho(1)*y(-1) - rho(2)*y(-2) ar2t.append sqres = ((res^2/var(1))/dof(1))+ 1 ar2t.append maxlik = @gammalog((dof(1) + 1)/2) - @gammalog(dof(1)/2) - log(!pi)/2 - log(dof(1))/2 - log(var(1))/2 - (dof(1)+1)*log(sqres)/2 'Use the following spec. for normally distributed errors 'ar2t.append sqres = res^2/var(1) 'ar2t.append maxlik = log(@dnorm(@sqrt(sqres))) -log(var(1))/2 'Run MLE and display results smpl @first+2 @last ar2t.ml(showopts,m=1000,c=1e-5) show ar2t.output 'Get the gradients ar2t.makegrads(n=gradslogl) gradlogl1 gradlogl2 gradlogl3 gradlogl4 '************************************************************************************************************************************************************ 'We can also use Optimize instead of LogL subroutine loglikelihood(series logl, vector beta, series y) series res = y - beta(1)*y(-1) - beta(2)*y(-2) series sqres = ((res^2/beta(3))/beta(4))+ 1 logl = @gammalog((beta(4) + 1)/2) - @gammalog(beta(4)/2) - log(!pi)/2 - log(beta(4))/2 - log(beta(3))/2 - (beta(4)+1)*log(sqres)/2 endsub series logl vector(4) beta beta(1) = .5 beta(2) = .5 beta(3) = 1 beta(4) = 2 optimize(ml=1, finalh=hessmat, hess=opg) loglikelihood(logl, beta, y) vector semat = @sqrt(@getmaindiagonal(-@inverse(hessmat))) 'standart errors of estimated coefficents smpl @all

Re: Estimation of AR(2) with t-student

Posted: Fri Nov 29, 2013 1:06 pm
by Chuse
Thank you very much. It work very well.
Now I would like to construct the estimation erros of the QML method using the score function. I checked that there is possible to get it as a table of the gradients.
But i dont know how to manipulate it, e.x. how can i get the Hessian matrix?. could you please help with it?

Re: Estimation of AR(2) with t-student

Posted: Sat Nov 30, 2013 8:27 am
by trubador
It is quite difficult to construct the Hessian matrix from the estimation results of LogL object. Therefore, I built the same model within the user-defined optimization framework, which also produces that output. I do not recall whether it was possible to retrieve gradients via the Optimize command, but it is with the LogL object. I've edited the code in my previous post, where "gradslogl" is the group of gradients and "hessmat" is the final hessian matrix.

Re: Estimation of AR(2) with t-student

Posted: Mon Dec 02, 2013 3:25 am
by Chuse
Thank you again, Trubador. Using both methods I can construct the standard errors for QML. :)