An expanding collection of tools I've created to aid in my own research. Most popular are functions that provide a streamlined, customizable summary of regressions (including robust standard error support) in the console, HTML/LaTeX/Word tables, and coefficient plots. A few other tools have been described in my blog and elsewhere.


Previously part of the `jtools` package, this provides a set of functions that aid the analysis of statistical interactions. It implement simple slopes analysis, the calculation of Johnson-Neyman intervals, and plots for understanding interaction effects.


This is an R package that contains tools for the management and analysis of panel data. The main contributions are a `panel_data` object class designed to make panel-specific functions easier to handle and `wbm`, a procedure for fitting within-between regression models.

Song and Lyric Data Scraper

This is the Ruby-based command line tool I wrote to collect the music-related data that were content-analyzed in Long & Eveland (2019).


This R package implements a technique from [Allison, Williams, and Moral-Benito (2017)]( and the Stata [command]( `xtdpdml`. It combines maximum likelihood estimation, the logic of cross-lagged panel models, and the robustness to spuriousness of fixed effects estimators into `dpm`, dynamic panel models. Written with help from Richard Williams and Paul Allison.

APA LaTeX Template

A template for writing reports in APA format using the LaTeX typesetting engine. The heavy lifting is done by the `apa6` package, but this saves the user some time writing out code to get started.

Does news coverage boost support for presidential candidates in the Democratic primary?

Observers note that in the 2020 Democratic primary, candidate support in polls is closely correlated with the amount of attention candidates get in the news. This begs the question of whether and how these two things might be causally related, particularly whether news coverage is helpful to candidates. Here I show some evidence that news coverage does indeed help.