spreg.SURerrorML

class spreg.SURerrorML(bigy, bigX, w, regimes=None, nonspat_diag=True, spat_diag=False, vm=False, epsilon=1e-07, name_bigy=None, name_bigX=None, name_ds=None, name_w=None, name_regimes=None)[source]

User class for SUR Error estimation by Maximum Likelihood

Parameters
bigydictionary

with vectors of dependent variable, one for each equation

bigXdictionary

with matrices of explanatory variables, one for each equation

wspatial weights object
regimeslist

default = None. List of n values with the mapping of each observation to a regime. Assumed to be aligned with ‘x’.

epsilonfloat

convergence criterion for ML iterations. default 0.0000001

nonspat_diagboolean

flag for non-spatial diagnostics, default = True

spat_diagboolean

flag for spatial diagnostics, default = False

vmboolean

flag for asymptotic variance for lambda and Sigma, default = False

name_bigydictionary

with name of dependent variable for each equation. default = None, but should be specified is done when sur_stackxy is used

name_bigXdictionary

with names of explanatory variables for each equation. default = None, but should be specified is done when sur_stackxy is used

name_dsstring

name for the data set

name_wstring

name for the weights file

name_regimesstring

name of regime variable for use in the output

Examples

First import libpysal to load the spatial analysis tools.

>>> import libpysal

Open data on NCOVR US County Homicides (3085 areas) using libpysal.io.open(). This is the DBF associated with the NAT shapefile. Note that libpysal.io.open() also reads data in CSV format.

>>> db = libpysal.io.open(libpysal.examples.get_path("NAT.dbf"),'r')

The specification of the model to be estimated can be provided as lists. Each equation should be listed separately. Equation 1 has HR80 as dependent variable, and PS80 and UE80 as exogenous regressors. For equation 2, HR90 is the dependent variable, and PS90 and UE90 the exogenous regressors.

>>> y_var = ['HR80','HR90']
>>> x_var = [['PS80','UE80'],['PS90','UE90']]
>>> yend_var = [['RD80'],['RD90']]
>>> q_var = [['FP79'],['FP89']]

The SUR method requires data to be provided as dictionaries. PySAL provides the tool sur_dictxy to create these dictionaries from the list of variables. The line below will create four dictionaries containing respectively the dependent variables (bigy), the regressors (bigX), the dependent variables’ names (bigyvars) and regressors’ names (bigXvars). All these will be created from th database (db) and lists of variables (y_var and x_var) created above.

>>> bigy,bigX,bigyvars,bigXvars = pysal.spreg.sur_utils.sur_dictxy(db,y_var,x_var)

To run a spatial error model, we need to specify the spatial weights matrix. To do that, we can open an already existing gal file or create a new one. In this example, we will create a new one from NAT.shp and transform it to row-standardized.

>>> w = libpysal.weights.Queen.from_shapefile(libpysal.examples.get_path("NAT.shp"))
>>> w.transform='r'

We can now run the regression and then have a summary of the output by typing: print(reg.summary)

Alternatively, we can just check the betas and standard errors, asymptotic t and p-value of the parameters:

>>> reg = SURerrorML(bigy,bigX,w=w,name_bigy=bigyvars,name_bigX=bigXvars,name_ds="NAT",name_w="nat_queen")
>>> reg.bSUR
{0: array([[ 4.0222855 ],
       [ 0.88489646],
       [ 0.42402853]]), 1: array([[ 3.04923009],
       [ 1.10972634],
       [ 0.47075682]])}
>>> reg.sur_inf
{0: array([[  0.36692181,  10.96224141,   0.        ],
       [  0.14129077,   6.26294579,   0.        ],
       [  0.04267954,   9.93517021,   0.        ]]), 1: array([[  0.33139969,   9.20106497,   0.        ],
       [  0.13352591,   8.31094371,   0.        ],
       [  0.04004097,  11.756878  ,   0.        ]])}
Attributes
nint

number of observations in each cross-section

n2int

n/2

n_eqint

number of equations

bigydictionary

with vectors of dependent variable, one for each equation

bigXdictionary

with matrices of explanatory variables, one for each equation

bigKarray

n_eq x 1 array with number of explanatory variables by equation

bigylagdictionary

spatially lagged dependent variable

bigXlagdictionary

spatially lagged explanatory variable

lamolsarray

spatial autoregressive coefficients from equation by equation ML-Error estimation

clikerrfloat

concentrated log-likelihood from equation by equation ML-Error estimation (no constant)

bSUR0array

SUR estimation for betas without spatial autocorrelation

llikfloat

log-likelihood for classic SUR estimation (includes constant)

lamsurfloat

spatial autoregressive coefficient in ML SUR Error

bSURarray

beta coefficients in ML SUR Error

varbarray

variance of beta coefficients in ML SUR Error

sigarray

error variance-covariance matrix in ML SUR Error

bigEarray

n by n_eq matrix of vectors of residuals for each equation

cliksurerrfloat

concentrated log-likelihood from ML SUR Error (no constant)

sur_infarray

inference for regression coefficients, stand. error, t, p

errllikfloat

log-likelihood for error model without SUR (with constant)

surerrllikfloat

log-likelihood for SUR error model (with constant)

lrtesttuple

likelihood ratio test for off-diagonal Sigma elements

likrlambdatuple

likelihood ratio test on spatial autoregressive coefficients

vmarray

asymptotic variance matrix for lambda and Sigma (only for vm=True)

lamsetparray

inference for lambda, stand. error, t, p (only for vm=True)

lamtesttuple

with test for constancy of lambda across equations (test value, degrees of freedom, p-value)

joinlamtuple

with test for joint significance of lambda across equations (test value, degrees of freedom, p-value)

surchowlist

with tuples for Chow test on regression coefficients. each tuple contains test value, degrees of freedom, p-value

name_bigydictionary

with name of dependent variable for each equation

name_bigXdictionary

with names of explanatory variables for each equation

name_dsstring

name for the data set

name_wstring

name for the weights file

name_regimesstring

name of regime variable for use in the output

__init__(self, bigy, bigX, w, regimes=None, nonspat_diag=True, spat_diag=False, vm=False, epsilon=1e-07, name_bigy=None, name_bigX=None, name_ds=None, name_w=None, name_regimes=None)[source]

Initialize self. See help(type(self)) for accurate signature.

Methods

__init__(self, bigy, bigX, w[, regimes, …])

Initialize self.