spreg.SURerrorGM

class spreg.SURerrorGM(bigy, bigX, w, df=None, 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 Generalized Moments

Parameters:
bigylist or dictionary

list with the name of the dependent variable for each equation or dictionary with vectors for dependent variable by equation

bigXlist or dictionary

list of lists the name of the explanatory variables for each equation or dictionary with matrix of explanatory variables by equation (note, already includes constant term)

wspatial weights object
dbPandas DataFrame

Optional. Required in case bigy and bigX are lists with names of variables

regimeslist

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

nonspat_diagbool

flag for non-spatial diagnostics, default = False

spat_diagbool

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

vmbool

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_dsstr

name for the data set

name_wstr

name for the weights file

name_regimesstr

name of regime variable for use in the output

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_dsstr

name for the data set

name_wstr

name for the weights file

name_regimesstr

name of regime variable for use in the output

Examples

>>> import libpysal
>>> import geopandas as gpd
>>> from spreg import SURerrorGM

Open data on NCOVR US County Homicides (3085 areas) from libpysal examples using geopandas.

>>> nat = libpysal.examples.load_example('Natregimes')
>>> df = gpd.read_file(nat.get_path("natregimes.shp"))

The specification of the model to be estimated can be provided as lists. Each equation should be listed separately. In this example, 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']]

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_dataframe(df)
>>> 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 = SURerrorGM(y_var,x_var,w=w,df=df,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.        ]])}
__init__(bigy, bigX, w, df=None, 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]

Methods

__init__(bigy, bigX, w[, df, regimes, ...])