code

Modified

August 19, 2026

At the moment, I primarily develop R packages to support research projects – you can read a little bit about my goals for these packages in what i want from academic code. In brief: I am committed to maintaining and explaining my research code to the extent that it assists others in their own academic research, but I’m not writing research code with the goal of it ending up in production.

Independently from my research, I have been involved in a number of open source projects in the tidyverse and tidymodels orbits. I previously maintained the broom package, and am responsible for the 0.5.0 release and a portion of the 0.7.0 release. For these contributions I was generously given authorship on Wickham et al. (2019).

I review for the R Journal and the Journal of Open Source Software.

You can find all my code on my GitHub. Please report bugs and let me know if things break!

recent news

  • 2026-04-16: vsp 0.1.4 is on CRAN. This update adds several heuristic localization metrics useful for investigating the quality of estimated embeddings.

  • 2026-04-15: spectralard 0.0.0.9000 is on GitHub. This in-development package implements estimators for random dot product graphs from Aggregated Relational Data.

design of statistical software

I was previously quite interested in the design of statistical software and contributed to rOpenSci’s statistical software reviewing guidelines, as well as early versions of the tidymodels implementation principles. I have some long form explorations of modeling software design on my blog:

research software (in development)

  • spectralard estimates random dot product graphs from Aggregated Relational Data. Functional but lacking documentation.

  • latentnetmediate estimates natural direct and indirect effects in social network data, using the methods developed in Hayes et al. (2025). Methods have been implemented but are not yet documented.

Both of these packages need a small push to land on CRAN. Getting either of these out the door would be a very reasonable undergraduate project.

research software (released)

  • fastRG samples large, sparse random dot product graphs very efficiently and is especially useful when running simulation studies for spectral network estimators. I am committed to maintenance of this package and will respond quickly to feature requests or questions about how you might use it in your own research. The fastRG sampling algorithm is described in Rohe et al. (2018).

  • vsp performs semi-parametric estimation of latent factors in random dot product graphs by computing varimax rotations of the spectral embeddings of graphs. The resulting factors are sparse and interpretable. The theory work on this was done by Rohe and Zeng (2023), and then I ended up using varimax rotation a lot in my own data analysis and wrapped some of the infrastructure I developed into this package. I am committed to maintenance of this package and will respond quickly to feature requests or questions about how you might use it in your own research.

  • fastadi is a proof-of-concept implementation of AdaptiveImpute, a self-tuning matrix completion method with adaptive thresholding that is closely related to softImpute (Cho et al. 2019, 2018). I extended AdaptiveImpute to the computationally challenging case where the entire upper triangle is observed as part of my work with Karl Rohe on citation networks. This is research code rather than code intended for broad consumption. I make no commitments to maintaining or improving this code unless something about it is blocking an ongoing research project.

  • gdim estimates graph dimension using cross-validated eigenvalues, which determines the number of communities in stochastic blockmodels and variants. The method is described in Chen et al. (2021).

  • aPPR approximates Personalized PageRanks in large graphs, including those that can only be queried via an API. aPPR additionally performs degree correction and regularization, allowing users to recover blocks from stochastic blockmodels (see Chen et al. 2020). Note that the Twitter workflow is defunct: aPPR was originally designed to be used together with the neocache backend to sample large portions of the Twitter following graph with high Personalized PageRanks around seed nodes (joint work with Nathan Kolbow), but I am no longer maintaining neocache and cannot commit any development time to keeping up with the Twitter API shenanigans. slides

open source work

  • broom converts statistical objects into tidy tibbles, putting hundreds of types of statistical estimates into a consistent format to make programming easier. broom is part of the tidyverse; as mentioned above, I no longer maintain the package.

  • distributions3 provides an S3 interface to distribution functions, with an emphasis on good documentation and beginner friendly design. The vignettes in particular are designed to walk students in intro stat courses through a litany of classic hypothesis tests. Achim Zeileis now maintains the package.

References

Chen, Fan, Sebastien Roch, Karl Rohe, and Shuqi Yu. 2021. “Estimating Graph Dimension with Cross-validated Eigenvalues.” arXiv:2108.03336 [Cs, Math, Stat], August. http://arxiv.org/abs/2108.03336.
Chen, Fan, Yini Zhang, and Karl Rohe. 2020. “Targeted Sampling from Massive Block Model Graphs with Personalized PageRank.” Journal of the Royal Statistical Society: Series B (Statistical Methodology) 82 (1): 99–126. https://doi.org/10.1111/rssb.12349.
Cho, Juhee, Donggyu Kim, and Karl Rohe. 2018. “Asymptotic Theory for Estimating the Singular Vectors and Values of a Partially-Observed Low Rank Matrix with Noise.” Statistica Sinica, ahead of print. https://doi.org/10.5705/ss.202016.0205.
Cho, Juhee, Donggyu Kim, and Karl Rohe. 2019. “Intelligent Initialization and Adaptive Thresholding for Iterative Matrix Completion: Some Statistical and Algorithmic Theory for Adaptive-Impute.” Journal of Computational and Graphical Statistics 28 (2): 323–33. https://doi.org/10.1080/10618600.2018.1518238.
Hayes, Alex, Mark M Fredrickson, and Keith Levin. 2025. “Estimating Network-Mediated Causal Effects via Principal Components Network Regression.” Journal of Machine Learning Research 26: 1–99. https://www.jmlr.org/papers/v26/23-1317.html.
Rohe, Karl, Jun Tao, Xintian Han, and Norbert Binkiewicz. 2018. “A Note on Quickly Sampling a Sparse Matrix with Low Rank Expectation.” Journal of Machine Learning Research 19: 1–13. https://jmlr.csail.mit.edu/papers/volume19/17-128/17-128.pdf.
Rohe, Karl, and Muzhe Zeng. 2023. “Vintage Factor Analysis with Varimax Performs Statistical Inference.” Journal of the Royal Statistical Society Series B: Statistical Methodology 85 (4): 1037–60. https://doi.org/10.1093/jrsssb/qkad029.
Wickham, Hadley, Mara Averick, Jennifer Bryan, et al. 2019. “Welcome to the Tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.