sem.inla {INLABMA} | R Documentation |
These functions fit some spatial econometrics models for a given
value of rho
(the spatial autocorrelation parameter).
sem.inla
fits a spatial error model, slm
fits a spatial lag model
and sdm.inla
fits a spatial Durbin model.
sem.inla(formula, d, W, rho, improve = TRUE, impacts = FALSE, fhyper = NULL, probit = FALSE, ...) slm.inla(formula, d, W, rho, mmatrix = NULL, improve = TRUE, impacts = FALSE, fhyper = NULL, probit = FALSE, ...) sdm.inla(formula, d, W, rho, mmatrix = NULL, intercept = TRUE, impacts = FALSE, improve = TRUE, fhyper = NULL, probit = FALSE, ...) sac.inla(formula, d, W.rho, W.lambda, rho, lambda, mmatrix = NULL, improve = TRUE, impacts = FALSE, fhyper = NULL, probit = FALSE, ...)
formula |
Formula with the response variable, the fixed effects and, possibly, other non-linear effects. |
d |
Data.frame with the data. |
W |
Adjacency matrix. |
rho |
Value of the spatial autocorrelation parameter. For the SAC model, spatial autocorrelation term on the response. |
W.rho |
For the SAC model, adjacency matrix associated to the autocorrelation on the response. |
W.lambda |
For the SAC model, adjacency matrix associated to the autocorrelation on the error term. |
lambda |
For the SAC model, spatial autocorrelation of the error term. |
mmatrix |
Design matrix of fixed effects. |
intercept |
Logical. Whether an intercept has been included in the model. |
improve |
Logical. Whether improve model fitting (this may require more computing time). |
impacts |
Logical. Whether impacts are computed. |
fhyper |
Options to be passed to the definition of the hyper-parameters in the spatial effects. |
probit |
Logical. Whether a probit model is used. Note this is only used
when computing the impacts and that argument |
... |
Other arguments passed to function |
These functions fit a spatial econometrics model with a fixed value
of the spatial autocorrelation parameter rho
.
In addition, the marginal -log-likelihood is corrected to account for the variance-covariance matrix of the error term or random effects.
An inla
object.
Virgilio Gómez-Rubio <virgilio.gomez@uclm.es>
Roger S. Bivand, Virgilio Gómez-Rubio, Håvard Rue (2014). Approximate Bayesian inference for spatial econometrics models. Spatial Statistics, Volume 9, 146-165.
Roger S. Bivand, Virgilio Gómez-Rubio, Håvard Rue (2015). Spatial Data Analysis with R-INLA with Some Extensions. Journal of Statistical Software, 63(20), 1-31. URL http://www.jstatsoft.org/v63/i20/.
Virgilio Gómez-Rubio and Francisco-Palmí Perales (2016). Spatial Models with the Integrated Nested Laplace Approximation within Markov Chain Monte Carlo. Submitted.
## Not run: if(requireNamespace("INLA", quietly = TRUE)) { require(INLA) require(spdep) data(columbus) lw <- nb2listw(col.gal.nb, style="W") #Maximum Likelihood (ML) estimation colsemml <- errorsarlm(CRIME ~ INC + HOVAL, data=columbus, lw, method="eigen", quiet=FALSE) colslmml <- lagsarlm(CRIME ~ INC + HOVAL, data=columbus, lw, method="eigen", type="lag", quiet=FALSE) colsdmml <- lagsarlm(CRIME ~ INC + HOVAL, data=columbus, lw, method="eigen", type="mixed", quiet=FALSE) #Define grid on rho rrho<-seq(-1, .95, length.out=40) #Adjacency matrix W <- as(as_dgRMatrix_listw(nb2listw(col.gal.nb)), "CsparseMatrix") #Index for spatial random effects columbus$idx<-1:nrow(columbus) #Formula form<- CRIME ~ INC + HOVAL zero.variance = list(prec=list(initial = 25, fixed=TRUE)) seminla<-mclapply(rrho, function(rho){ sem.inla(form, d=columbus, W=W, rho=rho, family = "gaussian", impacts=FALSE, control.family = list(hyper = zero.variance), control.predictor=list(compute=TRUE), control.compute=list(dic=TRUE, cpo=TRUE), control.inla=list(print.joint.hyper=TRUE), #tolerance=1e-20, h=1e-6), verbose=FALSE ) }) slminla<-mclapply(rrho, function(rho){ slm.inla(form, d=columbus, W=W, rho=rho, family = "gaussian", impacts=FALSE, control.family = list(hyper = zero.variance), control.predictor=list(compute=TRUE), control.compute=list(dic=TRUE, cpo=TRUE), control.inla=list(print.joint.hyper=TRUE), #tolerance=1e-20, h=1e-6), verbose=FALSE ) }) sdminla<-mclapply(rrho, function(rho){ sdm.inla(form, d=columbus, W=W, rho=rho, family = "gaussian", impacts=FALSE, control.family = list(hyper = zero.variance), control.predictor=list(compute=TRUE), control.compute=list(dic=TRUE, cpo=TRUE), control.inla=list(print.joint.hyper=TRUE), #tolerance=1e-20, h=1e-6), verbose=FALSE ) }) #BMA using a uniform prior (in the log-scale) and using a Gaussian #approximation to the marginal sembma<-INLABMA(seminla, rrho, 0, usenormal=TRUE) slmbma<-INLABMA(slminla, rrho, 0, usenormal=TRUE) sdmbma<-INLABMA(sdminla, rrho, 0, usenormal=TRUE) #Display results plot(sembma$rho$marginal, type="l", ylim=c(0,5)) lines(slmbma$rho$marginal, lty=2) lines(sdmbma$rho$marginal, lty=3) #Add ML estimates abline(v=colsemml$lambda, col="red") abline(v=colslmml$rho, col="red", lty=2) abline(v=colsdmml$rho, col="red", lty=3) #Legend legend(-1,5, c("SEM", "SLM", "SDM"), lty=1:3) } ## End(Not run)