Public health researcher working across nutrition, tobacco, and health policy. Most of what you'll find here is replication code for peer-reviewed studies: randomized trials, national survey epidemiology, evidence synthesis, and cost analyses.
swaps (Stata). Replication pipeline for a food-swap RCT. Participant characteristics, primary treatment effects, moderation analyses, Bonferroni-Holm corrected p-values, effects by food group, and ClinicalTrials.gov reporting exports.
Paper: Grummon et al., PLOS Medicine (2026)
social_media_wl (Stata). Social media warning label trial. Mixed-effects models of perceived message effectiveness and awareness by warning topic, carryover sensitivity, moderator analyses, and CONSORT counts, plus a secondary study comparing AI-generated with human-selected priority messages.
Paper: Grummon et al., JAMA Health Forum (2026)
AI_smwl (Stata, Python). Two experiments testing large language models for public health messaging: whether LLM-refined social media warnings are rated as more effective by human participants than researcher-generated ones, and whether LLM-powered AI personas reproduce human participants' responses to warnings. Mixed-effects models of perceived message effectiveness and Cohen's d decomposition.
Smoking-Prevalence-Analysis-2018-2024 (SAS, Stata, Python). Urban-rural differences in adult smoking prevalence, 2018-2024. Survey-weighted logistic and GEE models for all 50 states plus nationwide, simple slopes for significant year-by-rurality interactions, predicted probability panels, and choropleth maps.
Preprint: Ulm et al., medRxiv (2026)
mastersthesis (Python). Master's thesis analysis of pooled BRFSS data: weighted descriptive statistics and state-level odds ratio choropleth maps.
snap-restrictions-support (Stata, Python). Pre-registered analysis of a national household panel survey on support for restricting soda and candy from SNAP purchases. Regression models of psychological factors (perceived health risk, overconsumption, feeling judged, perceived paternalism), SNAP recipient status, and their interactions.
unhealthy-food-umbrella (R, Python). Umbrella review of ultra-processed foods and health outcomes. Sensitivity analyses, heterogeneity assessment, and publication-ready forest plots.
Paper: Ulm et al., Child and Adolescent Psychiatry and Mental Health (2026)
Treatment_Survivorship_Costing_CRC (Python). Colorectal cancer treatment and survivorship cost estimation, with weighted averages by age group, race, sex, and stage.
opportunity-scout (Python, Claude agents). Weekly scout for grants, industry funding, scholarships, and jobs a doctoral student is eligible for. Reads the Grants.gov, NIH, NSF, and employer job-board databases directly, scores federal grants with a no-AWS copy of the GROW grant matcher from AWS and UNC, sends search agents only to sources with no database, and has an independent verifier check nine eligibility rules on each official page.
Survey-weighted regression, mixed-effects models, GEE and cluster-robust inference, moderation and subgroup analysis, multiple-comparison correction, meta-analysis and heterogeneity assessment, cost estimation, and geospatial visualization.
Stata, SAS, R, and Python (pandas, geopandas, matplotlib, plotly).
These repositories hold analytic code. Restricted, licensed, or oversized inputs such as raw survey exports, licensed product catalogs, and BRFSS or ACS source files are intentionally excluded; each README documents where to obtain them and how to rebuild the analytic files.
