Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: mata optimize problem


From   "Michael Ralph M. Abrigo" <[email protected]>
To   [email protected]
Subject   st: mata optimize problem
Date   Sat, 3 Jul 2010 14:08:35 +0800

Good day statalisters!
I am practically new in programming, especially in Mata. I'm trying to
implement Lambert, Brown and Florax's (2010) poisson spatial lag model
("A two-step estimator for a spatial lag model for counts: Theory,
small sample performance and an application", Urban and Regional
Economics) in Stata using full-information ML (instead of the two-step
LIML). However, I got stuck because of a conformability error which I
cannot trace (I was able to generate the matrices interactively using
ad hoc values). I was hoping I can do the FIML first before I venture
to their two-step estimator.
Any hint will be greatly appreciated.
Below is my code and the error messages.
Cheers,
Michael
drop _all
** (1) Set version; Open file
version 11.0
webuse "dollhill3.dta", clear
** (2) Generate constant; Local variables
gen cons = 1
local y deaths
local xlist smokes pyears cons
** (3) Generate weight matrix
sort pyears
gen xcoor = _n
gen ycoor = _n
spwmatrix gecon xcoor ycoor, wname(W) wtype(bin) ///
   dband(0 1000) rowstand mata replace
** (4) Optimize using Mata
mata
  void spmlpoisson (
    real scalar todo,
real rowvector rho_b,
real colvector lndensity,
real matrix g,
real matrix H)
{
      external y, X, W, I
 transmorphic A_inv
 real colvector Xb_sar, mu_sar
 real rowvector b
 real scalar rho
      rho_b = rho, b
A_inv = cholinv(I - rho * W)
Xb_sar = A_inv * X * b'
        mu_sar = exp(Xb_sar)
lndensity = (y :* Xb_sar) - mu_sar - lnfactorial(y)
}
  st_view(y = ., ., "`y'")
  st_view(X = ., ., tokens("`xlist'"))
  fh = fopen("W", "r")
    W = fgetmatrix(fh)
   fclose(fh)
  I = I(cols(W))
  S = optimize_init()
  optimize_init_evaluator(S, &spmlpoisson())
  optimize_init_which(S, "max")
  optimize_init_evaluatortype(S, "d0")
  optimize_init_params(S, J(1, cols(X) + 1, 0))
  rho_b = optimize(S)
                       *:  3200  conformability error
           spmlpoisson():     -  function returned error
      opt__calluser0_d():     -  function returned error
      opt__d0_calluser():     -  function returned error
    deriv__call1user_d():     -  function returned error
 _deriv__compute_value():     -  function returned error
                _deriv():     -  function returned error
       opt__eval_nr_d0():     -  function returned error
             opt__eval():     -  function returned error
opt__looputil_iter0_common():     -  function returned error
opt__looputil_iter0_nr():     -  function returned error
          opt__loop_nr():     -  function returned error
              optimize():     -  function returned error
                 <istmt>:     -  function returned error
r(3200);


end

--
"I am most anxious for liberties for our country... but I place as a
prior condition the education of the people so that our country may
have an individuality of its own and make itself worthy of
liberties... " Jose Rizal,1896

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index