bayespecon.models.panel_base.SpatialPanelModel¶
-
class bayespecon.models.panel_base.SpatialPanelModel(formula=
None, data=None, y=None, X=None, W=None, unit_col=None, time_col=None, N=None, T=None, model=0, priors=None, logdet_method=None, robust=False)[source]¶ Base class for static spatial panel models with FE transforms.
- Parameters:¶
- formula=
None¶ Either formula mode (formula + data) or matrix mode (y + X).
- data=
None¶ Either formula mode (formula + data) or matrix mode (y + X).
- y=
None¶ Either formula mode (formula + data) or matrix mode (y + X).
- X=
None¶ Either formula mode (formula + data) or matrix mode (y + X).
- W : libpysal.graph.Graph or scipy.sparse matrix¶
Spatial weights of shape
(N, N)(preferred) or the full(N*T, N*T)block-diagonal panel matrix. Accepts alibpysal.graph.Graph(the modern libpysal graph API) or anyscipy.sparsematrix. The legacylibpysal.weights.Wobject is not accepted directly; passw.sparseto use the underlying sparse matrix, or convert withlibpysal.graph.Graph.from_W(w). W should be row-standardised; aUserWarningis raised if not.- unit_col=
None¶ Required in formula mode for robust panel sorting and N/T inference.
- time_col=
None¶ Required in formula mode for robust panel sorting and N/T inference.
- N=
None¶ Required in matrix mode if not inferable.
- T=
None¶ Required in matrix mode if not inferable.
- model=
0¶ 0 pooled, 1 unit FE, 2 time FE, 3 two-way FE.
- priors : dict, optional¶
Override default priors. Keys depend on the model subclass; see each model’s docstring for supported keys.
- logdet_method : str, optional¶
How to compute
log|I - rho*W|. WhenNone, the method is auto-selected from the cross-sectionalN x Nweights size viabayespecon.logdet._auto_logdet_method():"eigenvalue"forN <= 2000and"chebyshev"otherwise.- robust : bool, default False¶
If True, use a Student-t error distribution instead of Normal, yielding a model that is robust to heavy-tailed outliers. When
robust=True, anu(degrees of freedom) parameter is added to the model with anExponential(lam=nu_lam)prior (defaultnu_lam = 1/30, mean ≈ 30). Thenuprior can be controlled via thepriorsdict with keynu_lam.
- formula=
-
__init__(formula=
None, data=None, y=None, X=None, W=None, unit_col=None, time_col=None, N=None, T=None, model=0, priors=None, logdet_method=None, robust=False)[source]¶
Methods
__init__([formula, data, y, X, W, unit_col, ...])fit([draws, tune, chains, target_accept, ...])Sample the posterior for the panel model.
Return fitted values at posterior mean parameters.
Return transformed residuals
y - fitted.Run Bayesian LM specification tests and return a summary table.
spatial_diagnostics_decision([alpha])Return a model-selection decision from Bayesian LM test results.
spatial_effects([return_posterior_samples])Compute Bayesian inference for direct, indirect, and total impacts.
summary([var_names])Return posterior summary table.
Attributes
Return the ArviZ InferenceData from the most recent fit.
Return the PyMC model object built for the most recent fit.
-
fit(draws=
2000, tune=1000, chains=4, target_accept=0.9, random_seed=None, **sample_kwargs)[source]¶ Sample the posterior for the panel model.
- Parameters:¶
- draws : int, default=2000¶
Number of post-tuning draws per chain.
- tune : int, default=1000¶
Number of tuning draws per chain.
- chains : int, default=4¶
Number of chains.
- target_accept : float, default=0.9¶
NUTS target acceptance probability.
- random_seed : int, optional¶
Random seed used by PyMC.
- **sample_kwargs¶
Extra keyword arguments forwarded to
pymc.sample().
- Returns:¶
Posterior samples and diagnostics.
- Return type:¶
arviz.InferenceData
- property inference_data : arviz.data.inference_data.InferenceData | None[source]¶
Return the ArviZ InferenceData from the most recent fit.
- property pymc_model : pymc.model.core.Model | None[source]¶
Return the PyMC model object built for the most recent fit.
- spatial_diagnostics()[source]¶
Run Bayesian LM specification tests and return a summary table.
Iterates over the class-level
_spatial_diagnostics_testsregistry and calls each test function on this fitted model, collecting the results into a tidy DataFrame. The set of tests depends on the model type — for example, an OLSPanelFE model runs Panel-LM-Lag, Panel-LM-Error, Panel-LM-SDM-Joint, and Panel-LM-SLX-Error-Joint.Requires the model to have been fit (
.fit()called) and a spatial weights matrixWto have been supplied at construction time.- Returns:¶
DataFrame indexed by test name with columns:
Column
Description
statistic
Posterior mean of the LM statistic
median
Posterior median of the LM statistic
df
Degrees of freedom for the \(\chi^2\) reference
p_value
Bayesian p-value:
1 - chi2.cdf(mean, df)ci_lower
Lower bound of 95% credible interval (2.5%)
ci_upper
Upper bound of 95% credible interval (97.5%)
The DataFrame has
attrs["model_type"](class name) andattrs["n_draws"](total posterior draws) metadata.- Return type:¶
pandas.DataFrame
- Raises:¶
RuntimeError – If the model has not been fit yet.
See also
spatial_diagnostics_decisionModel-selection decision based on the test results.
-
spatial_diagnostics_decision(alpha=
0.05)[source]¶ Return a model-selection decision from Bayesian LM test results.
Implements the decision tree from Koley and Bera [2024] (the Bayesian analogue of the classical
stge_kbprocedure in Anselin et al. [1996]), adapted for panel models following Elhorst [2014].See also
spatial_diagnosticsCompute the Bayesian LM test statistics.
References
Koley and Bera [2024], Anselin et al. [1996], Elhorst [2014]
-
spatial_effects(return_posterior_samples=
False)[source]¶ Compute Bayesian inference for direct, indirect, and total impacts.
Computes impact measures for each posterior draw, then summarises the posterior distribution with means, 95% credible intervals, and Bayesian p-values.
- Parameters:¶
- Returns:¶
If return_posterior_samples is
False(default), returns a DataFrame indexed by feature names with columns for posterior means, credible-interval bounds, and Bayesian p-values.If return_posterior_samples is
True, returns(DataFrame, dict)where the dict has keys"direct","indirect","total", each mapping to a(G, k)array of posterior draws.- Return type:¶