Skip to content
Prev 1260 / 29559 Next

spatial autoregressive parameter space

On Wed, 6 Sep 2006, Griffin, Terry W wrote:

            
If you need a reliable estimator for the error simultaneous autoregressive
model (SAR really, not in K&P's terminology), use ML, GM is not a viable
alternative. I understand that for moderate sized data sets and high
dependence, results like yours are not unusual. K&P claim that the
contraint on the parameter in the Jacobian only applies exactly to (say)  
lambda == 1/max(eig(W)) at the top end, equivalently at the lower end, and
that values beyond these are OK.

This does not accord with Cressie (1993, p. 471, 7.2.35) or Schabenberger
& Gotway (2005, p. 336 - they refer to Haining 1990, p. 82), that is the
heavy spatial stats monographs (as I read them). GM fits optimise lambda
and sigma^2, and from my observations slither about a lot on a very flat
surface (which may have multiple local optima - see Guyon).  The optimiser
can be tuned to get a bit more precision (control=), but since GM assumes
that you can fit without properly respecting the Jacobian, it isn't
surprising that it hits more trouble when lambda approaches its upper
limit. If you have been using GMerrorsar() with return_LL=TRUE (default),
you've been using internal sparse methods to get the Jacobian to compute
the log likelihood for the GLS fit based on the lambda found by GM; in
that case going to ML shouldn't be painful.

With 3000 observations, I would have thought that ML is an option
(probably provided that your W is symmetric or row-standardised
symmetric). spdep can use sparse methods for this, as can James LeSage's
Matlab code, and the underlying code in GeoDa can also use sparse methods
(two latter untried by me recently). Of course ML will take a little
longer, but do use the value of the Jacobian (though there may be
numerical issues - I have seen log(|I - lambda*W|) of under -300, so the
actual value of the determinant is really as close to zero as you can get.

The spdep errorsarlm() has been run using method="SparseM" for n > 12000 
with style="B" with a good deal of argument-passing to set the bounds for 
line optimisation (interval=) and the SparseM det() allocation parameters 
cholAlloc=.

Hope this helps,

Roger