Tools for estimating, interpreting, and visualizing Spatial-X
(SLX) regression models. Provides a formula-based interface with
first-class support for variable-specific weights matrices, higher-order
spatial lags, temporally-lagged spatial variables (TSLS), and tidy
effects decomposition (direct, indirect, total). Designed to lower the
barrier to SLX modeling for applied researchers who already work with
'sf' and 'lm'-style formulas. Methods follow Wimpy, Whitten, and
Williams (2021)

Documentation: https://cwimpy.github.io/slxr/
Spatial-X (SLX) models for applied researchers.
slxr makes it easy to fit, interpret, and visualize Spatial-X regression
models in R. Unlike existing tools that treat SLX as a consolation prize for
SAR, slxr centers the SLX approach and provides first-class support for the
features applied researchers actually need:
slx(y ~ x1 + x2, data, W, lag = "x1")
and get a fitted model, not a wrestling match with listw objects.W matrices (contiguity, alliance, trade, etc.) in a
single model.W, W², W³) with clean effects decomposition.modelsummary-compatible output (via tidy() and glance() methods).W specifications.# Development version
# install.packages("remotes")
remotes::install_github("cwimpy/slxr")
library(slxr)
data(defense_burden) # 1995 cross-section from Wimpy et al. (2021)
W_contig <- slx_weights(style = "custom", matrix = defense_burden$W_contig,
row_standardize = FALSE)
W_alliance <- slx_weights(style = "custom", matrix = defense_burden$W_alliance,
row_standardize = FALSE)
W_defense <- slx_weights(style = "custom", matrix = defense_burden$W_defense,
row_standardize = FALSE)
fit <- slx(
ch_milex ~ milex_tm1 + log_pop_tm1 + civilwar_tm1 + total_wars_tm1 +
alliance_us + ch_milex_us + ch_milex_ussr,
data = defense_burden$data,
spatial = list(
civilwar_tm1 = W_contig,
total_wars_tm1 = list(contig = W_contig, alliance = W_alliance),
milex_tm1 = list(contig = W_contig, defense = W_defense)
)
)
slx_effects(fit)
slx_plot_effects(fit, types = c("indirect", "total"))

Variable-specific weights matrices:
fit <- slx(defense ~ civil_war + interstate_war + defense_lag,
data = df,
spatial = list(
civil_war = W_contig,
interstate_war = W_contig,
defense_lag = list(W_contig, W_pact)
))
Early development. The MVP covers single-W SLX estimation, effects
decomposition, and modelsummary integration. Multi-W, higher-order,
temporal, and plotting features are on the roadmap.
If you use slxr in published work, please cite both the package and
the methodological paper it implements. Run citation("slxr") in R to
see the current BibTeX entry, or refer to:
Wimpy, C., Whitten, G. D., & Williams, L. K. (2021). X Marks the Spot: Unlocking the Treasure of Spatial-X Models. Journal of Politics, 83(2), 722–739. doi:10.1086/710089
Vega, S. H., & Elhorst, J. P. (2015). The SLX Model. Journal of Regional Science, 55(3), 339–363.
LeSage, J. P., & Pace, R. K. (2009). Introduction to Spatial Econometrics. Chapman & Hall/CRC.