sartobit {spatialprobit} | R Documentation |
Bayesian estimation of the SAR Tobit model
Description
Bayesian estimation of the spatial autoregressive Tobit model (SAR Tobit model).
Usage
sartobit(formula, W, data, ...)
sar_tobit_mcmc(y, X, W, ndraw = 1000, burn.in = 100, thinning = 1,
prior=list(a1=1, a2=1, c=rep(0, ncol(X)), T=diag(ncol(X))*1e12, lflag = 0),
start = list(rho = 0.75, beta = rep(0, ncol(X)), sige = 1),
m=10, computeMarginalEffects=FALSE, showProgress=FALSE)
Arguments
y |
dependent variables. vector of zeros and ones |
X |
design matrix |
W |
spatial weight matrix |
ndraw |
number of MCMC iterations |
burn.in |
number of MCMC burn-in to be discarded |
thinning |
MCMC thinning factor, defaults to 1. |
prior |
A list of prior settings for
|
start |
list of start values |
m |
Number of burn-in samples in innermost Gibbs sampler. Defaults to 10. |
computeMarginalEffects |
Flag if marginal effects are calculated. Defaults to FALSE. We recommend to enable it only when sample size is small. |
showProgress |
Flag if progress bar should be shown. Defaults to FALSE. |
formula |
an object of class " |
data |
an optional data frame, list or environment (or object coercible by |
... |
additional arguments to be passed |
Details
Bayesian estimates of the spatial autoregressive Tobit model (SAR Tobit model)
z = \rho W y + X \beta + \epsilon, \epsilon \sim N(0, \sigma^2_{e} I_n)
z = (I_n - \rho W)^{-1} X \beta + (I_n - \rho W)^{-1} \epsilon
y = max(z, 0)
where y
(n \times 1)
is only observed for z \ge 0
and censored to 0 otherwise.
\beta
is a (k \times 1)
vector of parameters associated with the (n \times k)
data matrix X.
The prior distributions are
\beta \sim N(c,T)
and
\rho \sim Uni(rmin,rmax)
or
\rho \sim Beta(a1,a2)
.
Value
Returns a structure of class sartobit
:
beta |
posterior mean of bhat based on draws |
rho |
posterior mean of rho based on draws |
bdraw |
beta draws (ndraw-nomit x nvar) |
pdraw |
rho draws (ndraw-nomit x 1) |
sdraw |
sige draws (ndraw-nomit x 1) |
total |
a matrix (ndraw,nvars-1) total x-impacts |
direct |
a matrix (ndraw,nvars-1) direct x-impacts |
indirect |
a matrix (ndraw,nvars-1) indirect x-impacts |
rdraw |
r draws (ndraw-nomit x 1) (if m,k input) |
nobs |
# of observations |
nvar |
# of variables in x-matrix |
ndraw |
# of draws |
nomit |
# of initial draws omitted |
nsteps |
# of samples used by Gibbs sampler for TMVN |
y |
y-vector from input (nobs x 1) |
zip |
# of zero y-values |
a1 |
a1 parameter for beta prior on rho from input, or default value |
a2 |
a2 parameter for beta prior on rho from input, or default value |
time |
total time taken |
rmax |
1/max eigenvalue of W (or rmax if input) |
rmin |
1/min eigenvalue of W (or rmin if input) |
tflag |
'plevel' (default) for printing p-levels; 'tstat' for printing bogus t-statistics |
lflag |
lflag from input |
cflag |
1 for intercept term, 0 for no intercept term |
lndet |
a matrix containing log-determinant information (for use in later function calls to save time) |
Author(s)
adapted to and optimized for R by Stefan Wilhelm <wilhelm@financial.com> based on Matlab code from James P. LeSage
References
LeSage, J. and Pace, R. K. (2009), Introduction to Spatial Econometrics, CRC Press, chapter 10, section 10.3, 299–304
See Also
sarprobit
, sarorderedprobit
or semprobit
for SAR probit/SAR Ordered Probit/ SEM probit model fitting
Examples
# Example from LeSage/Pace (2009), section 10.3.1, p. 302-304
# Value of "a" is not stated in book!
# Assuming a=-1 which gives approx. 50% censoring
library(spatialprobit)
a <- -1 # control degree of censored observation
n <- 1000
rho <- 0.7
beta <- c(0, 2)
sige <- 0.5
I_n <- sparseMatrix(i=1:n, j=1:n, x=1)
x <- runif(n, a, 1)
X <- cbind(1, x)
eps <- rnorm(n, sd=sqrt(sige))
param <- c(beta, sige, rho)
# random locational coordinates and 6 nearest neighbors
lat <- rnorm(n)
long <- rnorm(n)
W <- kNearestNeighbors(lat, long, k=6)
y <- as.double(solve(I_n - rho * W) %*% (X %*% beta + eps))
table(y > 0)
# full information
yfull <- y
# set negative values to zero to reflect sample truncation
ind <- which(y <=0)
y[ind] <- 0
# Fit SAR (with complete information)
fit_sar <- sartobit(yfull ~ X-1, W,ndraw=1000,burn.in=200, showProgress=FALSE)
summary(fit_sar)
# Fit SAR Tobit (with approx. 50% censored observations)
fit_sartobit <- sartobit(y ~ x,W,ndraw=1000,burn.in=200, showProgress=TRUE)
par(mfrow=c(2,2))
for (i in 1:4) {
ylim1 <- range(fit_sar$B[,i], fit_sartobit$B[,i])
plot(fit_sar$B[,i], type="l", ylim=ylim1, main=fit_sartobit$names[i], col="red")
lines(fit_sartobit$B[,i], col="green")
legend("topleft", legend=c("SAR", "SAR Tobit"), col=c("red", "green"),
lty=1, bty="n")
}
# Fit SAR Tobit (with approx. 50% censored observations)
fit_sartobit <- sartobit(y ~ x,W,ndraw=1000,burn.in=0, showProgress=TRUE,
computeMarginalEffects=TRUE)
# Print SAR Tobit marginal effects
impacts(fit_sartobit)
#--------Marginal Effects--------
#
#(a) Direct effects
# lower_005 posterior_mean upper_095
#x 1.013 1.092 1.176
#
#(b) Indirect effects
# lower_005 posterior_mean upper_095
#x 2.583 2.800 3.011
#
#(c) Total effects
# lower_005 posterior_mean upper_095
#x 3.597 3.892 4.183
#mfx <- marginal.effects(fit_sartobit)