spdep (version 0.6-9)

lagmess: Matrix exponential spatial lag model

Description

The function fits a matrix exponential spatial lag model, using optim to find the value of alpha, the spatial coefficient.

Usage

lagmess(formula, data = list(), listw, zero.policy = NULL, na.action = na.fail, q = 10, start = -2.5, control=list(), method="BFGS", verbose=NULL) "summary"(object, ...) "print"(x, ...) "print"(x, digits = max(5, .Options$digits - 3), signif.stars = FALSE, ...) "residuals"(object, ...) "deviance"(object, ...) "coef"(object, ...) "fitted"(object, ...) "logLik"(object, ...)

Arguments

formula
a symbolic description of the model to be fit. The details of model specification are given for lm()
data
an optional data frame containing the variables in the model. By default the variables are taken from the environment which the function is called.
listw
a listw object created for example by nb2listw
zero.policy
default NULL, use global option value; if TRUE assign zero to the lagged value of zones without neighbours, if FALSE assign NA - causing lagmess() to terminate with an error
na.action
a function (default options("na.action")), can also be na.omit or na.exclude with consequences for residuals and fitted values - in these cases the weights list will be subsetted to remove NAs in the data. It may be necessary to set zero.policy to TRUE because this subsetting may create no-neighbour observations. Note that only weights lists created without using the glist argument to nb2listw may be subsetted.
q
default 10; number of powers of the spatial weights to use
start
starting value for numerical optimization, should be a small negative number
control
control parameters passed to optim
method
default BFGS, method passed to optim
verbose
default NULL, use global option value; if TRUE report function values during optimization
x,object
Objects of classes lagmess or summary.lagmess to be passed to methods
digits
the number of significant digits to use when printing
signif.stars
logical. If TRUE, "significance stars" are printed for each coefficient.
...
further arguments passed to or from other methods

Value

The function returns an object of class lagmess with components:

Details

The underlying spatial lag model:

$$y = \rho W y + X \beta + \varepsilon$$

where $rho$ is the spatial parameter may be fitted by maximum likelihood. In that case, the log likelihood function includes the logartithm of cumbersome Jacobian term $|I - rho W|$. If we rewrite the model as:

$$S y = X \beta + \varepsilon$$

we see that in the ML case $S y = (I - rho W) y$. If W is row-stochastic, S may be expressed as a linear combination of row-stochastic matrices. By pre-computing the matrix $[y Wy, W^2y, ..., W^{q-1}y]$, the term $S y (alpha)$ can readily be found by numerical optimization using the matrix exponential approach. $alpha$ and $rho$ are related as $rho = 1 - exp(alpha)$, conditional on the number of matrix power terms taken q.

References

J. P. LeSage and R. K. Pace (2007) A matrix exponential specification. Journal of Econometrics, 140, 190-214; J. P. LeSage and R. K. Pace (2009) Introduction to Spatial Econometrics. CRC Press, Chapter 9.

See Also

lagsarlm, optim

Examples

Run this code
data(baltimore)
baltimore$AGE <- ifelse(baltimore$AGE < 1, 1, baltimore$AGE)
lw <- nb2listw(knn2nb(knearneigh(cbind(baltimore$X, baltimore$Y), k=7)))
obj1 <- lm(log(PRICE) ~ PATIO + log(AGE) + log(SQFT) + lag(lw, log(AGE)),
 data=baltimore)
lm.morantest(obj1, lw)
lm.LMtests(obj1, lw, test="all")
obj2 <- lagmess(log(PRICE) ~ PATIO + log(AGE) + log(SQFT) + 
 lag(lw, log(AGE)), data=baltimore, listw=lw)
summary(obj2)
obj3 <- lagsarlm(log(PRICE) ~ PATIO + log(AGE) + log(SQFT) + 
 lag(lw, log(AGE)), data=baltimore, listw=lw)
summary(obj3)
data(boston)
lw <- nb2listw(boston.soi)
gp2 <- lagsarlm(log(CMEDV) ~ CRIM + ZN + INDUS + CHAS + I(NOX^2) + I(RM^2)
 +  AGE + log(DIS) + log(RAD) + TAX + PTRATIO + B + log(LSTAT),
 data=boston.c, lw, method="Matrix")
summary(gp2)
gp2a <- lagmess(CMEDV ~ CRIM + ZN + INDUS + CHAS + I(NOX^2) + I(RM^2)
 +  AGE + log(DIS) + log(RAD) + TAX + PTRATIO + B + log(LSTAT),
 data=boston.c, lw)
summary(gp2a)

Run the code above in your browser using DataLab