sdmw {estimateW} | R Documentation |
A Markov Chain Monte Carlo (MCMC) sampler for the panel spatial Durbin model (SDM) with unknown spatial weight matrix
Description
The sampler uses independent Normal-inverse-Gamma priors for the slope and variance parameters, as well as a four-parameter
beta prior for the spatial autoregressive parameter \rho
. It is a wrapper around W_sampler
.
Usage
sdmw(
Y,
tt,
X = matrix(0, nrow(Y), 0),
Z = matrix(1, nrow(Y), 1),
niter = 100,
nretain = 50,
W_prior = W_priors(n = nrow(Y)/tt),
rho_prior = rho_priors(),
beta_prior = beta_priors(k = ncol(X) * 2 + ncol(Z)),
sigma_prior = sigma_priors()
)
Arguments
Y |
numeric |
tt |
single number greater or equal to 1. Denotes the number of time observations. |
X |
numeric |
Z |
numeric |
niter |
single number greater or equal to 1, indicating the total number of draws. Will be automatically coerced to integer. The default value is 100. |
nretain |
single number greater or equal to 0, indicating the number of draws kept after the burn-in. Will be automatically coerced to integer. The default value is 50. |
W_prior |
list containing prior settings for estimating the spatial weight matrix |
rho_prior |
list of prior settings for estimating |
beta_prior |
list containing priors for the slope coefficients |
sigma_prior |
list containing priors for the error variance |
Details
The considered panel spatial Durbin model (SDM) with unknown (n
by n
) spatial weight
matrix W
takes the form:
Y_t = \rho W Y_t + X_t \beta_1 + W X_t \beta_2 + Z \beta_3 + \varepsilon_t,
with \varepsilon_t \sim N(0,I_n \sigma^2)
and W = f(\Omega)
. The n
by n
matrix \Omega
is an unknown binary adjacency matrix with zeros on the main diagonal and
f(\cdot)
is the (optional) row-standardization function. \rho
is a scalar spatial autoregressive parameter.
Y_t
(n \times 1
) collects the n
cross-sectional (spatial) observations for time
t=1,...,T
. X_t
(n \times k_1
) and Z_t
(n \times k_2
) are
matrices of explanatory variables, where the former will also be spatially lagged. \beta_1
(k_1 \times 1
), \beta_2
(k_1 \times 1
) and \beta_3
(k_2 \times 1
)
are unknown slope parameter vectors.
After vertically staking the T
cross-sections Y=[Y_1',...,Y_T']'
(N \times 1
),
X=[X_1',...,X_T']'
(N \times k_1
) and Z=[Z_1', ..., Z_T']'
(N \times k_2
),
with N=nT
. The final model can be expressed as:
Y = \rho \tilde{W}Y + X \beta_1 + \tilde{W} X \beta_2 + Z \beta_3 + \varepsilon,
where \tilde{W}=I_T \otimes W
and \varepsilon \sim N(0,I_N \sigma^2)
. Note that the input
data matrices have to be ordered first by the cross-sectional spatial units and then stacked by time.
Estimation usually even works well in cases of n >> T
. However, note that for applications with n > 200
the
estimation process becomes computationally demanding and slow. Consider in this case reducing niter
and
nretain
and carefully check whether the posterior chains have converged.
Value
List with posterior samples for the slope parameters, \rho
, \sigma^2
, W
,
and average direct, indirect, and total effects.
Examples
n = 20; tt = 10
dgp_dat = sim_dgp(n =n, tt = tt, rho = .75, beta1 = c(.5,1),beta2 = c(-1,.5),
beta3 = c(1.5), sigma2 = .05,n_neighbor = 3,intercept = TRUE)
res = sdmw(Y = dgp_dat$Y,tt = tt,X = dgp_dat$X,Z = dgp_dat$Z,niter = 20,nretain = 10)