spreg.SURerrorML¶
- class spreg.SURerrorML(bigy, bigX, w, df=None, 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
list
ordictionary
list with the name of the dependent variable for each equation or dictionary with vectors for dependent variable by equation
- bigX
list
ordictionary
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)
- w
spatial
weights
object
- db
Pandas
DataFrame
Optional. Required in case bigy and bigX are lists with names of variables
- regimes
list
default = None. List of n values with the mapping of each observation to a regime. Assumed to be aligned with ‘x’.
- epsilon
float
convergence criterion for ML iterations. default 0.0000001
- nonspat_diagbool
flag for non-spatial diagnostics, default = True
- spat_diagbool
flag for spatial diagnostics, default = False
- vmbool
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
str
name for the data set
- name_w
str
name for the weights file
- name_regimes
str
name of regime variable for use in the output
- bigy
- Attributes:
- n
int
number of observations in each cross-section
- n2
int
n/2
- n_eq
int
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
array
n_eq x 1 array with number of explanatory variables by equation
- bigylag
dictionary
spatially lagged dependent variable
- bigXlag
dictionary
spatially lagged explanatory variable
- lamols
array
spatial autoregressive coefficients from equation by equation ML-Error estimation
- clikerr
float
concentrated log-likelihood from equation by equation ML-Error estimation (no constant)
- bSUR0
array
SUR estimation for betas without spatial autocorrelation
- llik
float
log-likelihood for classic SUR estimation (includes constant)
- lamsur
float
spatial autoregressive coefficient in ML SUR Error
- bSUR
array
beta coefficients in ML SUR Error
- varb
array
variance of beta coefficients in ML SUR Error
- sig
array
error variance-covariance matrix in ML SUR Error
- bigE
array
n by n_eq matrix of vectors of residuals for each equation
- cliksurerr
float
concentrated log-likelihood from ML SUR Error (no constant)
- sur_inf
array
inference for regression coefficients, stand. error, t, p
- errllik
float
log-likelihood for error model without SUR (with constant)
- surerrllik
float
log-likelihood for SUR error model (with constant)
- lrtest
tuple
likelihood ratio test for off-diagonal Sigma elements
- likrlambda
tuple
likelihood ratio test on spatial autoregressive coefficients
- vm
array
asymptotic variance matrix for lambda and Sigma (only for vm=True)
- lamsetp
array
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
str
name for the data set
- name_w
str
name for the weights file
- name_regimes
str
name of regime variable for use in the output
- n
Examples
>>> import libpysal >>> import geopandas as gpd >>> from spreg import SURerrorML
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 = spreg.SURerrorML(y_var,x_var,w=w,df=df,name_ds="NAT",name_w="nat_queen") >>> reg.bSUR {0: array([[4.02228606], [0.88489637], [0.42402845]]), 1: array([[3.04923031], [1.10972632], [0.47075678]])}
>>> reg.sur_inf {0: array([[ 0.36692175, 10.96224484, 0. ], [ 0.14129077, 6.26294545, 0. ], [ 0.04267954, 9.93516909, 0. ]]), 1: array([[ 0.33139967, 9.20106629, 0. ], [ 0.13352591, 8.31094381, 0. ], [ 0.04004097, 11.75687747, 0. ]])}
- __init__(bigy, bigX, w, df=None, 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]¶
Methods
__init__
(bigy, bigX, w[, df, regimes, ...])