Hello, I'm new to Gretl, and while I think I've picked things up  
pretty quickly I'm stumped with what is probably a simple problem for  
regular users. When I execute the muhat function in script below I get  
a "Data types not conformable for operation" error message.  It  
appears that the second function doesn't like the matrix reference  
arguments, but I don't see why that would be a problem. I've searched  
the archives for similar problems but haven't found a solution to my  
problem.  (FYI I'm running Gretl 1.8.4 on an XP machine.) Your help  
would be greatly appreciated.

Script:

function matrix local_level (series y)
     /* starting values */
     scalar s1 = 1
     scalar s2 = 1
     /* set up Kalman matrices */
     matrix H = {1 ; 1}
     matrix F = {1, 0 ; 0, 0.97}
     matrix Q = {s1, 0 ; 0, s2}
     /* Kalman filter set-up */
     kalman
         obsy y
         obsymat H
         statemat F
         statevar Q
     end kalman --diffuse
     /* ML estimation */
     mle ll = ERR ? NA : $kalman_llt
     Q[1,1] = s1
     Q[2,2] = s2
     ERR = kfilter()
     params s1 s2
     end mle
     return s1 ~ s2
end function

function list loclev_sm (series y, scalar s1, scalar s2)
     kalman
         obsy y
         obsymat H
         statemat F
         statevar Q
     end kalman --diffuse
     matrix ret = ksmooth()
     series wt = ret[,1]
     series xt = ret[,2]
     list components = wt xt
     return components */
end function

/* -------------------- execute -------------------- */
matrix Vars = local_level(y)
list muhat = loclev_sm(y, Vars[,1], Vars[,2])


Output:

gretl version 1.8.4
Current session: 2009-09-18 20:25
? function matrix local_level (series y)
 > /* starting values */
 > scalar s1 = 1
 > scalar s2 = 1
 > /* set up Kalman matrices */
 > matrix H = {1 ; 1}
 > matrix F = {1, 0 ; 0, 0.97}
 > matrix Q = {s1, 0 ; 0, s2}
 > /* Kalman filter set-up */
 > kalman
 > obsy y
 > obsymat H
 > statemat F
 > statevar Q
 > end kalman --diffuse
 > /* ML estimation */
 > mle ll = ERR ? NA : $kalman_llt
 > Q[1,1] = s1
 > Q[2,2] = s2
 > ERR = kfilter()
 > params s1 s2
 > end mle
 > return s1 ~ s2
 > end function
? function list loclev_sm (series y, scalar s1, scalar s2)
 > kalman
 > obsy y
 > obsymat H
 > statemat F
 > statevar Q
 > end kalman --diffuse
 > matrix ret = ksmooth()
 > series wt = ret[,1]
 > series xt = ret[,2]
 > list components = wt xt
 > return components */
 > end function
/* -------------------- execute -------------------- */
? matrix Vars = local_level(y)
Using numerical derivatives
Tolerance = 1.81899e-012
Function evaluations: 67
Evaluations of gradient: 15

Model 1: ML, using observations 2001:10-2009:06 (T = 93)
ll = ERR ? NA : $kalman_llt
Standard errors based on Outer Products matrix

              estimate   std. error   t-ratio   p-value
   ----------------------------------------------------
   s1         4.08513     16.8057     0.2431    0.8079
   s2         4.12376     16.5388     0.2493    0.8031

Log-likelihood      -241.2759   Akaike criterion     486.5518
Schwarz criterion    491.6170   Hannan-Quinn         488.5970

Generated matrix Vars
? list muhat = loclev_sm(y, Vars[,1], Vars[,2])
Data types not conformable for operation

Error executing script: halting
 > list muhat = loclev_sm(y, Vars[,1], Vars[,2])

Reply via email to