SOS! + or non negative argument to function expected ....

For technical questions regarding estimation of single equations, systems, VARs, Factor analysis and State Space Models in EViews. General econometric questions and advice should go in the Econometric Discussions forum.

Moderators: EViews Gareth, EViews Moderator

jill_lr
Posts: 3
Joined: Wed Jul 02, 2014 11:39 pm

SOS! + or non negative argument to function expected ....

Postby jill_lr » Tue Jul 08, 2014 11:11 pm

Hi all, I am getting this error message "positive or non negative argument to function expected in SCALAR LR PVAL..." while running GARCH.

Also, my GARCH equation has a message that says "convergence achieved after 1 iteration".

Please help!

Here are the codes:

' BV_GARCH.PRG (3/30/2004)
' example program for EViews LogL object
'
' unrestricted version of
' bi-variate BEKK of Engle and Kroner (1995):
'
' y = mu + res
' res ~ N(0,H)
'
' H = omega*omega' + beta H(-1) beta' + alpha res(-1) res(-1)' alpha'
'
' where
'
' y = 2 x 1
' mu = 2 x 1
' H = 2 x 2 (symmetric)
' H(1,1) = variance of y1 (saved as var_y1)
' H(1,2) = cov of y1 and y2 (saved as var_y2)
' H(2,2) = variance of y2 (saved as cov_y1y2)
' omega = 2 x 2 low triangular
' beta = 2 x 2
' alpha = 2 x 2
'

'change path to program path
%path = @runpath
cd %path


' dependent variables of both series must be continues
smpl @all
series y1 = ret_sensex_det
series y2 = ret_kospi_det

' set sample
' first observation of s1 need to be one or two periods after
' the first observation of s0
sample s0 1/02/2005 5/21/2014
sample s1 1/03/2005 5/21/2014

' initialization of parameters and starting values
' change below only to change the specification of model
smpl s0

'get starting values from univariate GARCH
equation eq1.arch(m=500,c=1e-5) y1 c
equation eq2.arch(m=500,c=1e-5) y2 c

' declare coef vectors to use in bi-variate GARCH model
' see above for details
coef(2) mu
mu(1) = eq1.c(1)
mu(2)= eq2.c(1)

coef(3) omega
omega(1)=(eq1.c(2))
omega(2)=0.01
omega(3)=(eq2.c(2))

coef(4) alpha
alpha(1) = (eq1.c(3))
alpha(2) = 0
alpha(3) = 0
alpha(4) = (eq2.c(3))

coef(4) beta
beta(1)= (eq1.c(4))
beta(2)= 0
beta(3) = 0
beta(4)= (eq2.c(4))

' constant adjustment for log likelihood
!mlog2pi = 2*log(2*@acos(-1))

' use var-cov of sample in "s1" as starting value of variance-covariance matrix
series cov_y1y2 = @cov(y1-mu(1), y2-mu(2))
series var_y1 = @var(y1)
series var_y2 = @var(y2)

series sqres1 = (y1-mu(1))^2
series sqres2 = (y2-mu(2))^2
series res1res2 = (y1-mu(1))*(y2-mu(2))


' ...........................................................
' LOG LIKELIHOOD
' set up the likelihood
' 1) open a new blank likelihood object (L.O.) name bvgarch
' 2) specify the log likelihood model by append
' ...........................................................

logl bvgarch
bvgarch.append @logl logl
bvgarch.append sqres1 = (y1-mu(1))^2
bvgarch.append sqres2 = (y2-mu(2))^2
bvgarch.append res1res2 = (y1-mu(1))*(y2-mu(2))

' calculate the variance and covariance series
bvgarch.append var_y1 = omega(1)^2 + beta(1)^2*var_y1(-1)+beta(1)*beta(3)*cov_y1y2(-1)+beta(1)*beta(3)*cov_y1y2(-1)+beta(3)^2*var_y2(-1) + alpha(1)^2*sqres1(-1)+alpha(1)*alpha(3)*res1res2(-1)+alpha(1)*alpha(3)*res1res2(-1)+alpha(3)^2*sqres2(-1)

bvgarch.append var_y2 = omega(3)^2+omega(2)^2 +beta(4)^2*var_y2(-1)+beta(4)*beta(2)*cov_y1y2(-1)+beta(4)*beta(2)*cov_y1y2(-1)+beta(2)^2*var_y1(-1) + alpha(4)^2*sqres2(-1)+alpha(4)*alpha(2)*res1res2(-1)+alpha(4)*alpha(2)*res1res2(-1)+alpha(2)^2*sqres1(-1)

bvgarch.append cov_y1y2 = omega(1)*omega(2) + beta(2)*beta(1)*var_y1(-1) + beta(3)*beta(2)*cov_y1y2(-1) + beta(1)*beta(4)*cov_y1y2(-1) + beta(4)*beta(3)*var_y2(-1) + alpha(2)*alpha(1)*sqres1(-1) + alpha(4)*alpha(1)*res1res2(-1) + alpha(3)*alpha(2)*res1res2(-1) + alpha(4)*alpha(3)*sqres2(-1)

' determinant of the variance-covariance matrix
bvgarch.append deth = var_y1*var_y2 - cov_y1y2^2

' inverse elements of the variance-covariance matrix
bvgarch.append invh1 = var_y2/deth
bvgarch.append invh3 = var_y1/deth
bvgarch.append invh2 = -cov_y1y2/deth

' log-likelihood series
bvgarch.append logl =-0.5*(!mlog2pi + (invh1*sqres1+2*invh2*res1res2+invh3*sqres2) + log(deth))

' remove some of the intermediary series
' bvgarch.append @temp invh1 invh2 invh3 sqres1 sqres2 res1res2 deth


' estimate the model
smpl s1
bvgarch.ml(showopts, m=500, c=0.001)

' change below to display different output
show bvgarch.output
graph varcov.line var_y1 var_y2 cov_y1y2
show varcov

' LR statistic for univariate versus bivariate model
scalar lr = -2*( eq1.@logl + eq2.@logl-bvgarch.@logl)
scalar lr_pval = 1 - @cchisq(lr,1)
Attachments
garch_results.docx
(21.12 KiB) Downloaded 253 times

Return to “Estimation”

Who is online

Users browsing this forum: No registered users and 2 guests