pysal.model.spreg.SURerrorML

class pysal.model.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:
bigy : dictionary with vectors of dependent variable, one for

each equation

bigX : dictionary with matrices of explanatory variables,

one for each equation

w : spatial weights object
regimes : list; default = None

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

epsilon : convergence criterion for ML iterations

default 0.0000001

nonspat_diag : boolean; flag for non-spatial diagnostics, default = True
spat_diag : boolean; flag for spatial diagnostics, default = False
vm : boolean; flag for asymptotic variance for lambda and Sigma,

default = False

name_bigy : dictionary with name of dependent variable for each equation

default = None, but should be specified is done when sur_stackxy is used

name_bigX : dictionary with names of explanatory variables for each

equation default = None, but should be specified is done when sur_stackxy is used

name_ds : string; name for the data set
name_w : string; name for the weights file
name_regimes : string; name of regime variable for use in the output

Examples

First import pysal.lib to load the spatial analysis tools.

>>> import pysal.lib

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

>>> db = pysal.lib.io.open(pysal.lib.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.model.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 = pysal.lib.weights.Queen.from_shapefile(pysal.lib.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:
n : number of observations in each cross-section
n2 : n/2
n_eq : number of equations
bigy : dictionary with vectors of dependent variable, one for

each equation

bigX : dictionary with matrices of explanatory variables,

one for each equation

bigK : n_eq x 1 array with number of explanatory variables

by equation

bigylag : spatially lagged dependent variable
bigXlag : spatially lagged explanatory variable
lamols : spatial autoregressive coefficients from equation by

equation ML-Error estimation

clikerr : concentrated log-likelihood from equation by equation

ML-Error estimation (no constant)

bSUR0 : SUR estimation for betas without spatial autocorrelation
llik : log-likelihood for classic SUR estimation (includes constant)
lamsur : spatial autoregressive coefficient in ML SUR Error
bSUR : beta coefficients in ML SUR Error
varb : variance of beta coefficients in ML SUR Error
sig : error variance-covariance matrix in ML SUR Error
bigE : n by n_eq matrix of vectors of residuals for each equation
cliksurerr : concentrated log-likelihood from ML SUR Error (no constant)
sur_inf : inference for regression coefficients, stand. error, t, p
errllik : log-likelihood for error model without SUR (with constant)
surerrllik : log-likelihood for SUR error model (with constant)
lrtest : likelihood ratio test for off-diagonal Sigma elements
likrlambda : likelihood ratio test on spatial autoregressive coefficients
vm : asymptotic variance matrix for lambda and Sigma (only for vm=True)
lamsetp : inference for lambda, stand. error, t, p (only for vm=True)
lamtest : tuple with test for constancy of lambda across equations

(test value, degrees of freedom, p-value)

joinlam : tuple with test for joint significance of lambda across

equations (test value, degrees of freedom, p-value)

surchow : list with tuples for Chow test on regression coefficients

each tuple contains test value, degrees of freedom, p-value

name_bigy : dictionary with name of dependent variable for each equation
name_bigX : dictionary with names of explanatory variables for each

equation

name_ds : string; name for the data set
name_w : string; name for the weights file
name_regimes : string; name of regime variable for use in the output
__init__(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__(bigy, bigX, w[, regimes, …]) Initialize self.