spreg.ML_ErrorFE

class spreg.ML_ErrorFE(y, x, w, slx_lags=0, slx_vars='all', time_effects=False, epsilon=1e-07, vm=False, name_y=None, name_x=None, name_w=None, name_ds=None, latex=False)[source]

ML estimation of the fixed effects spatial error model with all results and diagnostics [Elh03].

Parameters:
ynumpy.ndarray or pandas object

nxt or (nxt)x1 array for dependent variable

xnumpy.ndarray or pandas object

nx(txk) or (nxt)xk array for independent (exogenous) variables, no constant

wpysal W object

Spatial weights object

slx_lagsinteger

Number of spatial lags of X to include in the model specification. If slx_lags>0, the specification becomes of the SLX type.

slx_varseither “All” (default) or list of booleans to select x variables

to be lagged

time_effectsbool

If True, then include time dummies in the model specification (first omitted). Default: False

epsilonfloat

tolerance criterion in mimimize_scalar function and inverse_product

vmbool

if True, include variance-covariance matrix in summary results

name_ystr

Name of dependent variable for use in output

name_xlist of strings

Names of independent variables for use in output

name_wstr

Name of weights matrix for use in output

name_dsstr

Name of dataset for use in output

latexbool

Specifies if summary is to be printed in latex format

Attributes:
outputdataframe

regression results pandas dataframe

summarystr

Summary of regression results and diagnostics (note: use in conjunction with the print command)

betasarray

k+1x1 array of estimated coefficients

lamfloat

estimate of spatial autoregressive coefficient

uarray

(nxt)x1 array of residuals

e_filteredarray

(nxt)x1 array of spatially filtered residuals

predyarray

(nxt)x1 array of predicted y values

ninteger

Total number of observations

tinteger

Number of time periods

kinteger

Number of variables for which coefficients are estimated (no constant, excluding the lambda)

yarray

(nxt)x1 array for dependent variable

xarray

Two dimensional array with nxt rows and one column for each independent (exogenous) variable, including the constant

mean_yfloat

Mean of dependent variable

std_yfloat

Standard deviation of dependent variable

vmarray

Variance covariance matrix (k+1 x k+1), all coefficients

vm1array

Variance covariance matrix (k+2 x k+2), includes sig2

sig2float

Sigma squared used in computations

logllfloat

maximized log-likelihood (including constant terms)

aicfloat

Akaike information criterion

schwarzfloat

Schwarz criterion

pr2float

Pseudo R squared (squared correlation between y and ypred)

std_errarray

1x(k+1) array of standard errors of the betas

z_statlist of tuples

z statistic; each tuple contains the pair (statistic, p-value), where each is a float

name_ystr

Name of dependent variable for use in output

name_xlist of strings

Names of independent variables for use in output

name_wstr

Name of weights matrix for use in output

name_dsstr

Name of dataset for use in output

mean_mu_ifloat

Mean of the fixed effects (mu_i) across all observations

mu_iarray

nx1 array of the individual fixed effects

fixed_effects: array

alias for mu_i (same object)

Examples

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

In this example, we will use data on NCOVR US County Homicides (3085 areas) included in libpysal.

>>> libpysal.examples.load_example('NCOVR')
>>> db = gpd.read_file(libpysal.examples.get_path("NAT.shp"))
>>> name_ds = "NCOVR.shp"

Extract the HR (homicide rates) data in the 70’s, 80’s and 90’s from the dataframe and make it the dependent variable for the regression. Note that the data can also be passed in the long format instead of wide format (i.e. a vector with n*t rows and a single column for the dependent variable and a matrix of dimension n*txk for the independent variables).

>>> y_name = ['HR70','HR80','HR90']
>>> y = db[y_name]

Extract RD and PS in the same time periods from the dataframe to be used as independent variables in the regression. IMPORTANT: The data must be organized in a way that all time periods of a given variable are side-by-side and in the correct time order. That is: x[:, 0:T] refers to T periods of k1, x[:, T+1:2T] refers to k2, etc. By default a vector of ones will be added to the independent variables passed in.

>>> x_names = ['RD70','RD80','RD90','PS70','PS80','PS90']
>>> x = db[x_names]

Since we are running a spatial model, we need to specify the spatial weights matrix that includes the spatial configuration of the observations. To do that, we can open an already existing gal file or create a new one. In this case, we will create one from NAT.shp.

>>> w = libpysal.weights.Queen.from_dataframe(db, use_index=True)
>>> w.transform = 'r'
>>> name_w = "NCOVR.gal"

We are all set with the preliminaries, we are good to run the model.

>>> reg = ML_ErrorFE(y, x, w)

Once we have run the model, we can explore a little bit the output with the command print(reg.summary).

__init__(y, x, w, slx_lags=0, slx_vars='all', time_effects=False, epsilon=1e-07, vm=False, name_y=None, name_x=None, name_w=None, name_ds=None, latex=False)[source]

Methods

__init__(y, x, w[, slx_lags, slx_vars, ...])

err_c_loglik_sp(lam, n, t, y, ylag, x, xlag, ...)

Attributes

mean_y

sig2n

sig2n_k

std_y

utu

vm

err_c_loglik_sp(lam, n, t, y, ylag, x, xlag, I, Wsp)
property mean_y
property sig2n
property sig2n_k
property std_y
property utu
property vm