Title: | Spatial Models for Limited Dependent Variables |
---|---|
Description: | The current version of this package estimates spatial autoregressive models for binary dependent variables using GMM estimators <doi:10.18637/jss.v107.i08> and RIS estimator <doi:10.1007/978-3-662-05617-2_8>. It supports one-step (Pinkse and Slade, 1998) <doi:10.1016/S0304-4076(97)00097-3> and two-step GMM estimator along with the linearized GMM estimator proposed by Klier and McMillen (2008) <doi:10.1198/073500107000000188>. It also allows for either Probit or Logit model and compute the average marginal effects. The RIS estimator allows to estimate the SAR and SEM model. All these models are presented in Sarrias and Piras (2023) <doi:10.1016/j.jocm.2023.100432>. |
Authors: | Mauricio Sarrias [aut, cre] , Gianfranco Piras [aut] , Daniel McMillen [ctb] |
Maintainer: | Mauricio Sarrias <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.1.4 |
Built: | 2024-11-18 06:11:18 UTC |
Source: | https://github.com/gpiras/spldv |
A generic function to collect coefficients and summary statistics from a bingmm
object. It is used in mtable
## S3 method for class 'bingmm' getSummary(obj, alpha = 0.05, ...)
## S3 method for class 'bingmm' getSummary(obj, alpha = 0.05, ...)
obj |
a |
alpha |
level of the confidence intervals, |
... |
further arguments, |
For more details see package memisc.
A list with an array with coefficient estimates and a vector containing the model summary statistics.
A generic function to collect coefficients and summary statistics from a binlgmm
object. It is used in mtable
## S3 method for class 'binlgmm' getSummary(obj, alpha = 0.05, ...)
## S3 method for class 'binlgmm' getSummary(obj, alpha = 0.05, ...)
obj |
a |
alpha |
level of the confidence intervals, |
... |
further arguments, |
For more details see package memisc.
A list with an array with coefficient estimates and a vector containing the model summary statistics.
A generic function to collect coefficients and summary statistics from a binris
object. It is used in mtable
## S3 method for class 'binris' getSummary(obj, alpha = 0.05, ...)
## S3 method for class 'binris' getSummary(obj, alpha = 0.05, ...)
obj |
a |
alpha |
level of the confidence intervals, |
... |
further arguments, |
For more details see package memisc.
A list with an array with coefficient estimates and a vector containing the model summary statistics.
Obtain the average marginal effects from bingmm
, binlgmm
or binris
class model.
## S3 method for class 'bingmm' impacts( obj, vcov = NULL, vce = c("robust", "efficient", "ml"), het = TRUE, atmeans = FALSE, type = c("mc", "delta"), R = 100, approximation = FALSE, pw = 5, tol = 1e-06, empirical = FALSE, ... ) ## S3 method for class 'binlgmm' impacts( obj, vcov = NULL, het = TRUE, atmeans = FALSE, type = c("mc", "delta"), R = 100, approximation = FALSE, pw = 5, tol = 1e-06, empirical = FALSE, ... ) ## S3 method for class 'binris' impacts( obj, vcov = NULL, het = TRUE, atmeans = FALSE, type = c("mc", "delta"), R = 100, approximation = FALSE, pw = 5, tol = 1e-06, empirical = FALSE, ... ) ## S3 method for class 'impacts.bingmm' print(x, ...) ## S3 method for class 'impacts.bingmm' summary(object, ...) ## S3 method for class 'summary.impacts.bingmm' print(x, digits = max(3, getOption("digits") - 3), ...)
## S3 method for class 'bingmm' impacts( obj, vcov = NULL, vce = c("robust", "efficient", "ml"), het = TRUE, atmeans = FALSE, type = c("mc", "delta"), R = 100, approximation = FALSE, pw = 5, tol = 1e-06, empirical = FALSE, ... ) ## S3 method for class 'binlgmm' impacts( obj, vcov = NULL, het = TRUE, atmeans = FALSE, type = c("mc", "delta"), R = 100, approximation = FALSE, pw = 5, tol = 1e-06, empirical = FALSE, ... ) ## S3 method for class 'binris' impacts( obj, vcov = NULL, het = TRUE, atmeans = FALSE, type = c("mc", "delta"), R = 100, approximation = FALSE, pw = 5, tol = 1e-06, empirical = FALSE, ... ) ## S3 method for class 'impacts.bingmm' print(x, ...) ## S3 method for class 'impacts.bingmm' summary(object, ...) ## S3 method for class 'summary.impacts.bingmm' print(x, digits = max(3, getOption("digits") - 3), ...)
obj |
an object of class |
vcov |
an estimate of the asymptotic variance-covariance matrix of the parameters for a |
vce |
string indicating what kind of variance-covariance matrix of the estimate should be computed when using |
het |
logical. If |
atmeans |
logical. If |
type |
string indicating which method is used to compute the standard errors of the average marginal effects. If |
R |
numerical. Indicates the number of draws used in the Monte Carlo approximation if |
approximation |
logical. If |
pw |
numeric. The power used for the approximation |
tol |
Argument passed to |
empirical |
logical. Argument passed to |
... |
further arguments. Ignored. |
x |
an object of class |
object |
an object of class |
digits |
the number of digits. |
Let the model be:
where if
and 0 otherwise;
if
link = "probit"
or if
link = "logit"
.
The RIS estimator assumes that .
The marginal effects respect to variable can be computed as
where is the pdf, which depends on the assumption of the error terms;
is the operator that creates a
diagonal matrix;
; and
is a diagonal matrix whose elements represent the square root of the diagonal elements of the variance-covariance matrix of
.
We implement these three summary measures: (1) The average total effects, , (2) The average direct effects,
, and (3) the average indirect effects,
.
The standard errors of the average total, direct and indirect effects can be estimated using either Monte Carlo (MC) approximation, which takes into account the sampling distribution of , or Delta Method.
An object of class impacts.bingmm
.
Mauricio Sarrias and Gianfranco Piras.
# Data set data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # Two-step (Probit) GMM estimator ts <- sbinaryGMM(CRIMED ~ INC + HOVAL| HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep") # Marginal effects using Delta Method summary(impacts(ts, type = "delta")) # Marginal effects using MC with 100 draws summary(impacts(ts, type = "mc", R = 100)) # Marginal effects using efficient VC matrix summary(impacts(ts, type = "delta", vce = "efficient")) # Marginal effects using efficient VC matrix and ignoring the heteroskedasticity summary(impacts(ts, type = "delta", vce = "efficient", het = FALSE)) # Marginal effects using RIS estimator ris_sar <- sbinaryRis(CRIMED ~ INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W")) summary(impacts(ris_sar, method = "delta")) summary(impacts(ris_sar, method = "mc", R = 100))
# Data set data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # Two-step (Probit) GMM estimator ts <- sbinaryGMM(CRIMED ~ INC + HOVAL| HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep") # Marginal effects using Delta Method summary(impacts(ts, type = "delta")) # Marginal effects using MC with 100 draws summary(impacts(ts, type = "mc", R = 100)) # Marginal effects using efficient VC matrix summary(impacts(ts, type = "delta", vce = "efficient")) # Marginal effects using efficient VC matrix and ignoring the heteroskedasticity summary(impacts(ts, type = "delta", vce = "efficient", het = FALSE)) # Marginal effects using RIS estimator ris_sar <- sbinaryRis(CRIMED ~ INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W")) summary(impacts(ris_sar, method = "delta")) summary(impacts(ris_sar, method = "mc", R = 100))
Make instruments for spatial models
make.instruments(listw, x, q)
make.instruments(listw, x, q)
listw |
object. An object of class |
x |
variable(s) to be lagged |
q |
number of lags |
Mauricio Sarrias and Gianfranco Piras.
Estimation of SAR model for binary dependent variables (either Probit or Logit), using one- or two-step GMM estimator. The type of model supported has the following structure:
where if
and 0 otherwise;
if
link = "probit"
or if
link = "logit"
.
sbinaryGMM( formula, data, listw = NULL, nins = 2, link = c("probit", "logit"), winitial = c("optimal", "identity"), s.matrix = c("robust", "iid"), type = c("onestep", "twostep"), gradient = TRUE, start = NULL, cons.opt = FALSE, approximation = FALSE, verbose = TRUE, print.init = FALSE, pw = 5, tol.solve = .Machine$double.eps, ... ) ## S3 method for class 'bingmm' coef(object, ...) ## S3 method for class 'bingmm' vcov( object, vce = c("robust", "efficient", "ml"), method = "bhhh", R = 1000, tol.solve = .Machine$double.eps, ... ) ## S3 method for class 'bingmm' print(x, digits = max(3, getOption("digits") - 3), ...) ## S3 method for class 'bingmm' summary( object, vce = c("robust", "efficient", "ml"), method = "bhhh", R = 1000, tol.solve = .Machine$double.eps, ... ) ## S3 method for class 'summary.bingmm' print(x, digits = max(5, getOption("digits") - 3), ...)
sbinaryGMM( formula, data, listw = NULL, nins = 2, link = c("probit", "logit"), winitial = c("optimal", "identity"), s.matrix = c("robust", "iid"), type = c("onestep", "twostep"), gradient = TRUE, start = NULL, cons.opt = FALSE, approximation = FALSE, verbose = TRUE, print.init = FALSE, pw = 5, tol.solve = .Machine$double.eps, ... ) ## S3 method for class 'bingmm' coef(object, ...) ## S3 method for class 'bingmm' vcov( object, vce = c("robust", "efficient", "ml"), method = "bhhh", R = 1000, tol.solve = .Machine$double.eps, ... ) ## S3 method for class 'bingmm' print(x, digits = max(3, getOption("digits") - 3), ...) ## S3 method for class 'bingmm' summary( object, vce = c("robust", "efficient", "ml"), method = "bhhh", R = 1000, tol.solve = .Machine$double.eps, ... ) ## S3 method for class 'summary.bingmm' print(x, digits = max(5, getOption("digits") - 3), ...)
formula |
a symbolic description of the model of the form |
data |
the data of class |
listw |
object. An object of class |
nins |
numerical. Order of instrumental-variable approximation; as default |
link |
string. The assumption of the distribution of the error term; it can be either |
winitial |
string. A string indicating the initial moment-weighting matrix |
s.matrix |
string. Only valid of |
type |
string. A string indicating whether the one-step ( |
gradient |
logical. Only for testing procedures. Should the analytic gradient be used in the GMM optimization procedure? |
start |
if not |
cons.opt |
logical. Should a constrained optimization procedure for |
approximation |
logical. If |
verbose |
logical. If |
print.init |
logical. If |
pw |
numeric. The power used for the approximation |
tol.solve |
Tolerance for |
... |
additional arguments passed to |
vce |
string. A string indicating what kind of standard errors should be computed when using |
method |
string. Only valid if |
R |
numeric. Only valid if |
x , object
|
an object of class |
digits |
the number of digits |
The data generating process is:
where if
and 0 otherwise;
if
link = "probit"
or if
link = "logit"
.. The general GMM
estimator minimizes
where and
where is the generalized residuals. Let
, then the instrument matrix
contains the linearly independent
columns of
. The one-step GMM estimator minimizes
setting either
if
winitial = "identity"
or if
winitial = "optimal"
. The two-step GMM estimator
uses an additional step to achieve higher efficiency by computing the variance-covariance matrix of the moments to weight the sample moments.
This matrix is computed using the residuals or generalized residuals from the first-step, which are consistent. This matrix is computed as
if
s.matrix = "robust"
or
, where
are the first-step generalized residuals.
An object of class “bingmm
”, a list with elements:
coefficients |
the estimated coefficients, |
call |
the matched call, |
callF |
the full matched call, |
X |
the X matrix, which contains also WX if the second part of the |
H |
the H matrix of instruments used, |
y |
the dependent variable, |
listw |
the spatial weight matrix, |
link |
the string indicating the distribution of the error term, |
Psi |
the moment-weighting matrix used in the last round, |
type |
type of model that was fitted, |
s.matrix |
the type of S matrix used in the second round, |
winitial |
the moment-weighting matrix used for the first step procedure |
opt |
object of class |
approximation |
a logical value indicating whether approximation was used to compute the inverse matrix, |
pw |
the powers for the approximation, |
formula |
the formula. |
Mauricio Sarrias and Gianfranco Piras.
Pinkse, J., & Slade, M. E. (1998). Contracting in space: An application of spatial statistics to discrete-choice models. Journal of Econometrics, 85(1), 125-154.
Fleming, M. M. (2004). Techniques for estimating spatially dependent discrete choice models. In Advances in spatial econometrics (pp. 145-168). Springer, Berlin, Heidelberg.
Klier, T., & McMillen, D. P. (2008). Clustering of auto supplier plants in the United States: generalized method of moments spatial logit for large samples. Journal of Business & Economic Statistics, 26(4), 460-471.
LeSage, J. P., Kelley Pace, R., Lam, N., Campanella, R., & Liu, X. (2011). New Orleans business recovery in the aftermath of Hurricane Katrina. Journal of the Royal Statistical Society: Series A (Statistics in Society), 174(4), 1007-1027.
Piras, G., & Sarrias, M. (2023). One or Two-Step? Evaluating GMM Efficiency for Spatial Binary Probit Models. Journal of choice modelling, 48, 100432.
Piras, G,. & Sarrias, M. (2023). GMM Estimators for Binary Spatial Models in R. Journal of Statistical Software, 107(8), 1-33.
# Data set data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # Two-step (Probit) GMM estimator ts <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep", verbose = TRUE) # Robust standard errors summary(ts) # Efficient standard errors summary(ts, vce = "efficient") # One-step (Probit) GMM estimator os <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "onestep", verbose = TRUE) summary(os) # One-step (Logit) GMM estimator with identity matrix as initial weight matrix os_l <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "logit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "onestep", winitial = "identity", verbose = TRUE) summary(os_l) # Two-step (Probit) GMM estimator with WX ts_wx <- sbinaryGMM(CRIMED ~ INC + HOVAL| INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep", verbose = FALSE) summary(ts_wx) # Constrained two-step (Probit) GMM estimator ts_c <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep", verbose = TRUE, cons.opt = TRUE) summary(ts_c)
# Data set data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # Two-step (Probit) GMM estimator ts <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep", verbose = TRUE) # Robust standard errors summary(ts) # Efficient standard errors summary(ts, vce = "efficient") # One-step (Probit) GMM estimator os <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "onestep", verbose = TRUE) summary(os) # One-step (Logit) GMM estimator with identity matrix as initial weight matrix os_l <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "logit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "onestep", winitial = "identity", verbose = TRUE) summary(os_l) # Two-step (Probit) GMM estimator with WX ts_wx <- sbinaryGMM(CRIMED ~ INC + HOVAL| INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep", verbose = FALSE) summary(ts_wx) # Constrained two-step (Probit) GMM estimator ts_c <- sbinaryGMM(CRIMED ~ INC + HOVAL, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), data = COL.OLD, type = "twostep", verbose = TRUE, cons.opt = TRUE) summary(ts_c)
Estimation of SAR model for binary dependent variables (either Probit or Logit), using Linearized GMM estimator suggested by Klier and McMillen (2008). The model is:
where if
and 0 otherwise;
if
link = "probit"
or
link = "logit"
.
sbinaryLGMM( formula, data, listw = NULL, nins = 2, link = c("logit", "probit"), ... ) ## S3 method for class 'binlgmm' coef(object, ...) ## S3 method for class 'binlgmm' vcov(object, ...) ## S3 method for class 'binlgmm' print(x, digits = max(3, getOption("digits") - 3), ...) ## S3 method for class 'binlgmm' summary(object, ...) ## S3 method for class 'summary.binlgmm' print(x, digits = max(3, getOption("digits") - 2), ...)
sbinaryLGMM( formula, data, listw = NULL, nins = 2, link = c("logit", "probit"), ... ) ## S3 method for class 'binlgmm' coef(object, ...) ## S3 method for class 'binlgmm' vcov(object, ...) ## S3 method for class 'binlgmm' print(x, digits = max(3, getOption("digits") - 3), ...) ## S3 method for class 'binlgmm' summary(object, ...) ## S3 method for class 'summary.binlgmm' print(x, digits = max(3, getOption("digits") - 2), ...)
formula |
a symbolic description of the model of the form |
data |
the data of class |
listw |
object. An object of class |
nins |
numerical. Order of instrumental-variable approximation; as default |
link |
string. The assumption of the distribution of the error term; it can be either |
... |
additional arguments. |
x , object
|
an object of class |
digits |
the number of digits |
The steps for the linearized spatial Probit/Logit model are the following:
1. Estimate the model by standard Probit/Logit model, in which spatial autocorrelation and heteroskedasticity are ignored. The estimated values are . Calculate the generalized residuals assuming that
and the gradient terms
and
.
2. The second step is a two-stage least squares estimator of the linearized model. Thus regress and
on
and obtain the predicted values
. Then regress
on
. The coefficients are the estimated values of
and
.
The variance-covariance matrix can be computed using the traditional White-corrected coefficient covariance matrix from the last two-stage least squares estimator of the linearlized model.
An object of class “bingmm
”, a list with elements:
coefficients |
the estimated coefficients, |
call |
the matched call, |
X |
the X matrix, which contains also WX if the second part of the |
H |
the H matrix of instruments used, |
y |
the dependent variable, |
listw |
the spatial weight matrix, |
link |
the string indicating the distribution of the error term, |
fit |
an object of |
formula |
the formula. |
Mauricio Sarrias and Gianfranco Piras.
Klier, T., & McMillen, D. P. (2008). Clustering of auto supplier plants in the United States: generalized method of moments spatial logit for large samples. Journal of Business & Economic Statistics, 26(4), 460-471.
Piras, G., & Sarrias, M. (2023). One or Two-Step? Evaluating GMM Efficiency for Spatial Binary Probit Models. Journal of choice modelling, 48, 100432.
Piras, G,. & Sarrias, M. (2023). GMM Estimators for Binary Spatial Models in R. Journal of Statistical Software, 107(8), 1-33.
# Data set data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # LGMM for probit using q = 3 for instruments lgmm <- sbinaryLGMM(CRIMED ~ INC + HOVAL | INC, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), nins = 3, data = COL.OLD) summary(lgmm)
# Data set data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # LGMM for probit using q = 3 for instruments lgmm <- sbinaryLGMM(CRIMED ~ INC + HOVAL | INC, link = "probit", listw = spdep::nb2listw(COL.nb, style = "W"), nins = 3, data = COL.OLD) summary(lgmm)
Estimation of spatial probit model using RIS-normal (a.k.a GHK) simulator. The models can be the SAR or SEM probit model model. The SAR probit model has the following structure:
where if
and 0 otherwise,
,
,
with
,
and
. The SEM probit model has the following structure:
where if
and 0 otherwise,
,
,
such that
, and
,
sbinaryRis( formula, data, subset, na.action, listw = NULL, R = 20, model = c("SAR", "SEM"), varcov = c("invsigma", "sigma"), approximation = TRUE, pw = 5, start = NULL, Qneg = FALSE, print.init = FALSE, ... ) ## S3 method for class 'binris' terms(x, ...) ## S3 method for class 'binris' estfun(x, ...) ## S3 method for class 'binris' bread(x, ...) ## S3 method for class 'binris' df.residual(object, ...) ## S3 method for class 'binris' vcov(object, ...) ## S3 method for class 'binris' coef(object, ...) ## S3 method for class 'binris' logLik(object, ...) ## S3 method for class 'binris' print(x, ...) ## S3 method for class 'binris' summary(object, eigentol = 1e-12, ...) ## S3 method for class 'summary.binris' print(x, digits = max(3, getOption("digits") - 2), ...)
sbinaryRis( formula, data, subset, na.action, listw = NULL, R = 20, model = c("SAR", "SEM"), varcov = c("invsigma", "sigma"), approximation = TRUE, pw = 5, start = NULL, Qneg = FALSE, print.init = FALSE, ... ) ## S3 method for class 'binris' terms(x, ...) ## S3 method for class 'binris' estfun(x, ...) ## S3 method for class 'binris' bread(x, ...) ## S3 method for class 'binris' df.residual(object, ...) ## S3 method for class 'binris' vcov(object, ...) ## S3 method for class 'binris' coef(object, ...) ## S3 method for class 'binris' logLik(object, ...) ## S3 method for class 'binris' print(x, ...) ## S3 method for class 'binris' summary(object, eigentol = 1e-12, ...) ## S3 method for class 'summary.binris' print(x, digits = max(3, getOption("digits") - 2), ...)
formula |
a symbolic description of the model of the form |
data |
the data of class |
subset |
an optional vector specifying a subset of observations to be used in the fitting process. |
na.action |
a function which indicates what should happen when the data contains |
listw |
object. An object of class |
R |
numerical. The number of draws used in RIS (GHK) simulator. |
model |
string. A string indicating which model to estimate. It can be |
varcov |
string. A string indicating over which variance-covariance matrix to apply the Chokesly factorization. |
approximation |
logical. If |
pw |
numeric. The power used for the approximation |
start |
if not |
Qneg |
logical. Whether to construct the diagonal elements of |
print.init |
logical. If |
... |
additional arguments passed to |
x , object
|
an object of class |
eigentol |
the standard errors are only calculated if the ratio of the smallest and largest eigenvalue of the Hessian matrix is less than |
digits |
the number of digits |
The models are estimated by simulating the probabilities using the RIS-normal (GHK) simulator. The aim is to evaluate
the multivariate density function , where
is a diagonal matrix with entries
and the
vector
depends on whether the model is SAR or SEM. If
model = "SAR"
, then where
;
if
model = "SEM"
, then .
Let be the variance-covariance model of the transformed model. If
model = "SAR"
, where
.
If
model = "SEM"
, then , where
.
Since is positive definite, there exists a Cholesky decomposition such that
, where
is the upper triangular Cholesky matrix and
is the precision matrix.
Let
. Then the random vector
can be replaced by
, where
is
a vector of standard normal variables. Then, the upper limit of the integration becomes
, which
can be written as
.
The RIS simulator is implemented by drawing a large number of random vector
and computing
recursively
for
. The parameters are estimated using the simulated maximum likelihood (SML) function:
where:
and is the univariate CDF of the standard normal density.
By default, sbinaryRis
compute the SML using the Cholesky transformation on ,
varcov = "invsigma"
.
The transformation can also be applied to using
varcov = "sigma"
, which is slower than the previous option.
This estimator can take several minutes for large datasets. Thus, by default the inverse matrices and
are approximated using the Leontief expansion.
An object of class "binris
", a list with elements:
varcov |
the matrix over which the Chokesly factorization is applied, |
model |
type of model that was fitted, |
Qneg |
matrix Q used, |
approximation |
a logical value indicating whether approximation was used to compute the inverse matrix, |
pw |
the powers for the approximation, |
call |
the matched call, |
X |
the X matrix, which contains also WX if the second part of the |
y |
the dependent variable, |
listw |
the spatial weight matrix, |
formula |
the formula, |
R |
number of draws, |
mf |
model frame. |
Mauricio Sarrias and Gianfranco Piras.
Beron, K. J., & Vijverberg, W. P. (2004). Probit in a spatial context: a Monte Carlo analysis. In Advances in spatial econometrics: methodology, tools and applications (pp. 169-195). Berlin, Heidelberg: Springer Berlin Heidelberg.
Fleming, M. M. (2004). Techniques for estimating spatially dependent discrete choice models. In Advances in spatial econometrics (pp. 145-168). Springer, Berlin, Heidelberg.
Pace, R. K., & LeSage, J. P. (2016). Fast simulated maximum likelihood estimation of the spatial probit model capable of handling large samples. In Spatial Econometrics: Qualitative and Limited Dependent Variables (pp. 3-34). Emerald Group Publishing Limited.
Piras, G., & Sarrias, M. (2023). One or Two-Step? Evaluating GMM Efficiency for Spatial Binary Probit Models. Journal of choice modelling, 48, 100432.
data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # Estimate SAR probit model using RIS simulator using Sigma_v^{-1} ris_sar <- sbinaryRis(CRIMED ~ INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), print.level = 2) summary(ris_sar) # Estimate SAR probit model using RIS simulator using Sigma_v ris_sar_2 <- sbinaryRis(CRIMED ~ INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), varcov = "sigma", print.level = 2) summary(ris_sar_2) # Estimate SDM probit model using RIS simulator ris_sdm <- sbinaryRis(CRIMED ~ INC + HOVAL | INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), print.level = 2) summary(ris_sdm) # Estimate SEM probit model using RIS simulator ris_sem <- sbinaryRis(CRIMED ~ INC + HOVAL | INC, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), model = "SEM") summary(ris_sem)
data(oldcol, package = "spdep") # Create dependent (dummy) variable COL.OLD$CRIMED <- as.numeric(COL.OLD$CRIME > 35) # Estimate SAR probit model using RIS simulator using Sigma_v^{-1} ris_sar <- sbinaryRis(CRIMED ~ INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), print.level = 2) summary(ris_sar) # Estimate SAR probit model using RIS simulator using Sigma_v ris_sar_2 <- sbinaryRis(CRIMED ~ INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), varcov = "sigma", print.level = 2) summary(ris_sar_2) # Estimate SDM probit model using RIS simulator ris_sdm <- sbinaryRis(CRIMED ~ INC + HOVAL | INC + HOVAL, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), print.level = 2) summary(ris_sdm) # Estimate SEM probit model using RIS simulator ris_sem <- sbinaryRis(CRIMED ~ INC + HOVAL | INC, data = COL.OLD, R = 50, listw = spdep::nb2listw(COL.nb, style = "W"), model = "SEM") summary(ris_sem)