# spreg.SURerrorGM¶

class spreg.SURerrorGM(bigy, bigX, w, regimes=None, nonspat_diag=True, spat_diag=False, vm=False, 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

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

nonspat_diagboolean

flag for non-spatial diagnostics, default = False

spat_diagboolean

flag for spatial diagnostics, default = False (to be implemented)

vmboolean

flag for asymptotic variance for lambda and Sigma, default = False (to be implemented)

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
>>> from libpysal.weights import Queen
>>> import spreg
>>> np.set_printoptions(suppress=True) #prevent scientific format


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

>>> nat = load_example('Natregimes')
>>> db = libpysal.io.open(nat.get_path('natregimes.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 = spreg.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 = Queen.from_shapefile(nat.get_path("natregimes.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 = spreg.SURerrorGM(bigy,bigX,w=w,name_bigy=bigyvars,name_bigX=bigXvars,name_ds="NAT",name_w="nat_queen")
>>> reg.bSUR
{0: array([[3.97746866],
[0.89021219],
[0.43050363]]), 1: array([[2.93679119],
[1.11002826],
[0.48761542]])}
>>> reg.sur_inf
{0: array([[ 0.37251476, 10.67734504,  0.        ],
[ 0.14224297,  6.25839153,  0.        ],
[ 0.04322388,  9.95985608,  0.        ]]), 1: array([[ 0.33694902,  8.71583245,  0.        ],
[ 0.13413626,  8.27537783,  0.        ],
[ 0.04033105, 12.09032288,  0.        ]])}

Attributes
nint

number of observations in each cross-section

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

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

sur_infarray

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

surchowarray

list 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__(bigy, bigX, w, regimes=None, nonspat_diag=True, spat_diag=False, vm=False, 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__(bigy, bigX, w[, regimes, …]) Initialize self.