CLAUDE.md — Project Guide for AI Assistants

About the Owner

Christopher B. Boyer, PhD - Assistant Professor, Cleveland Clinic Lerner College of Medicine of Case Western Reserve University - Staff Biostatistician, Lerner Research Institute, Cleveland Clinic - ORCID: 0000-0002-1101-2045 - Website: https://christopherbboyer.com (also https://boyercb.github.io) - GitHub: https://github.com/boyercb - Google Scholar: https://scholar.google.com/citations?user=MRTAUFwAAAAJ - Bluesky: https://bsky.app/profile/cboyer.bsky.social

Education

  • PhD Epidemiology, Harvard University (2023)
  • MPH Epidemiology, Columbia University (2015)
  • BS Mechanical Engineering, Wright State University (2010)

Research Interests

  • Causal inference methods for observational and randomized studies
  • Counterfactual prediction models
  • Postmarket vaccine evaluation (test-negative designs, target trial emulation)
  • Interference/spillover and placebo effects in RCTs
  • Comparative effectiveness research using electronic medical records
  • Infectious disease dynamics and mathematical modeling

Collaborations

  • Center for Value Based Care Research at Cleveland Clinic
  • Previously with Marc Lipsitch (Harvard), Issa Dahabreh, Jon Steingrimsson

Repository Structure

This is a Quarto website (project type: website) deployed to GitHub Pages.

Build System

  • Framework: Quarto
  • Config: _quarto.yml
  • Output directory: docs/ (for GitHub Pages)
  • Theme: cosmo (Bootstrap) with custom styles.css
  • Custom domain: christopherbboyer.com (via CNAME)
  • Analytics: Google Analytics (G-1D051HLKQD)
  • Extensions: mcanouil/iconify (for icon rendering)

Key Files

File Purpose
_quarto.yml Site-wide Quarto configuration (navbar, theme, output)
index.qmd Homepage with bio, photo, education, and social links
about.qmd About page (same content as index, different template)
blog.qmd Blog listing page (auto-lists from posts/)
research.qmd Publications page with categorized listings
publications.yaml Structured data for all publications
ejs/citation.ejs EJS template for rendering publication entries
talks.qmd Talks listing page (grid layout)
talks.yaml Structured data for talks
teaching.qmd Teaching experience page
software.qmd Software/packages page
styles.css Custom CSS (currently minimal)
CNAME Custom domain for GitHub Pages
posts/_metadata.yml Default metadata for all blog posts

Directory Layout

├── _quarto.yml          # Main config
├── index.qmd            # Homepage
├── about.qmd            # About page
├── blog.qmd             # Blog listing
├── research.qmd         # Publications listing (uses EJS template)
├── publications.yaml    # Publication data
├── software.qmd         # Software listing
├── talks.qmd            # Talks listing
├── talks.yaml           # Talk data
├── teaching.qmd         # Teaching page
├── styles.css           # Custom CSS
├── CNAME                # Custom domain
│
├── ejs/
│   └── citation.ejs     # EJS template for publication entries
│
├── _extensions/
│   └── mcanouil/iconify/  # Iconify extension for icons
│
├── posts/               # Blog posts (each in its own directory)
│   ├── _metadata.yml    # Shared post defaults (freeze, license, author)
│   ├── 2024-02-17-the-many-faces-of-the-g-formula/
│   ├── 2024-02-17-the-reasons-to-start-treatment-are-not-the-same-as-to-stop/
│   ├── 2024-02-18-m-estimation-for-causal-inference/
│   ├── 2024-02-26-bayesian-measurement-error-models/
│   ├── 2025-12-11-parallel-test-negative-design/
│   └── 2025-12-20-testing-negative-proxy/
│
├── talks/               # Talk slides (PDF + snapshot images)
│   ├── 2024-06-13/      # SER 2024 – TND & equi-confounding
│   ├── 2025-04-07/      # Joint Biostats Symposium – counterfactual prediction
│   ├── 2025-05-07/      # ISPE Vaccine SIG – post-exposure vaccines
│   ├── 2025-06-11a/     # SER 2025 – transporting intervention effects
│   └── 2025-06-11b/     # SER 2025 – TND & scalar immune measures
│
├── files/               # Static files (teaching materials, PDFs)
│   └── teaching/        # Slides, code, handouts for courses
│
├── _freeze/             # Quarto freeze cache (computational outputs)
│
└── docs/                # Rendered site output (GitHub Pages serves from here)

Publications Data Format

Publications are stored in publications.yaml. Each entry has:

- title: "Paper title"
  author: Last, F., <strong>Boyer, C.</strong>, ...  # Bold marks Chris
  date: '2025'                         # Year string (NOTE: EJS adds +1, see below)
  categories:
  - Pre-print | Methodological | Randomized Trials | Applied/Collaborative | Dissertation
  subtitle: Journal Name                # Journal/venue
  volume: 36
  issue: 3
  pages: 363-373
  path: https://doi.org/...            # Primary link
  doi: https://doi.org/...             # DOI URL
  url_preprint: https://...            # Optional links
  url_repo: https://...
  url_pdf: files/...
  url_slides: ...
  url_pap: ...                         # Pre-analysis plan

Important quirk: The EJS template (ejs/citation.ejs) adds +1 to the year extracted from the date field due to a JavaScript Date timezone issue. This means the date field in publications.yaml should be set to one year before the actual publication year (e.g., date: '2025' renders as “2026”). This is a workaround — be aware of it when adding new entries.

Publication Categories

  • Pre-print: Working papers and preprints (arXiv, medRxiv, etc.)
  • Methodological: Methods-focused peer-reviewed papers
  • Randomized Trials: Papers reporting RCT results
  • Applied/Collaborative: Collaborative applied research
  • Dissertation: Doctoral dissertation

Blog Posts

Posts live in posts/YYYY-MM-DD-slug/index.qmd. Shared defaults are in posts/_metadata.yml: - Freeze enabled (computational outputs cached) - CC BY license - TOC on left - Default author: Christopher Boyer, Cleveland Clinic

Current Posts

  1. The many faces of the g-formula (2024-02-16, draft) — Overview of g-formula forms with R implementation
  2. The reasons people start treatment are not the same as the reasons they stop (2024-02-16, draft) — Treatment initiation vs. discontinuation in causal inference
  3. M-estimation for causal inference in R (2024-02-16) — Tutorial on sandwich/M-estimation for IPW, outcome modeling, doubly-robust estimators
  4. Bayesian measurement error models for longitudinal data (2024-02-26) — Bayesian approaches in Stan for measurement error
  5. Parallel test-negative designs: a quick simulation tour (2025-12-11, draft) — Simulations for equi-confounding paper
  6. Can test-negative results correct hidden confounding? (2025-12-20) — Negative control outcomes for vaccine effectiveness

Talks Data Format

Talks are in talks.yaml:

- title: "Talk title"
  description: |
    Venue/conference short description
  author:
    - name: Christopher B. Boyer
  date: 'YYYY-MM-DD'
  subtitle: Full venue description
  image: talks/YYYY-MM-DD/snapshot.png
  path: talks/YYYY-MM-DD/slides.pdf

Each talk directory contains a snapshot.png (thumbnail) and slides.pdf.


Software Projects

Listed in software.qmd (static markdown, not data-driven):

R Packages

  • cfperformance — Prediction model performance under counterfactual interventions
  • globorisk — CVD risk calculation using Globorisk

Stata Packages

  • ipacheck — High-frequency checks on survey data for field experiments
  • bcstats — Back check/field audit data analysis
  • surveycto_api — Automate SurveyCTO data downloads via API
  • photobook — Create formatted photobooks from image files

Teaching History

All at Harvard (as Teaching Fellow): - EPI207 (Fall 2020, 2021) — Advanced Epidemiologic Methods (James Robins). 🏆 Excellence in Teaching 2021 - PHS2000 (Fall 2019, Spring 2020, Fall 2021) — Quantitative Research Methods. 🏆 Distinction in Teaching 2019-2021 - EPI260 (Spring 2023) — Mathematical Modeling of Infectious Diseases (Marc Lipsitch)


Common Tasks

Render the site locally

quarto render

Preview the site locally

quarto preview

Add a new blog post

  1. Create directory: posts/YYYY-MM-DD-slug/
  2. Create index.qmd with front matter (title, date, categories, description)
  3. Write content with code chunks if needed
  4. Run quarto render (or quarto preview)

Add a new publication

  1. Add entry to publications.yaml
  2. Set date to one year before actual year (due to EJS +1 quirk)
  3. Choose category: Pre-print, Methodological, Randomized Trials, Applied/Collaborative, Dissertation
  4. Bold the author name with <strong>Boyer, C.</strong>

Add a new talk

  1. Create directory: talks/YYYY-MM-DD/
  2. Add slides.pdf and snapshot.png
  3. Add entry to talks.yaml

Style Notes

  • Theme: Cosmo (Bootstrap)
  • Icons via Iconify extension () and inline <iconify-icon> tags
  • Publications use a custom EJS listing template, not Quarto’s built-in listings
  • The navbar has: Blog, Research, Talks, Teaching, Software, GitHub icon, CV link
  • Homepage uses the “trestles” about template