Figure Library / Learning paths

Locate missing observations · Synthetic teaching data

Subject-by-visit observation matrix

Are missing assessments isolated gaps or trailing runs within individual participants?

Adds individual observation histories to the aggregate completion display, with exact reconciliation of each visit denominator.

Explore the executed results

Selection switches exact precomputed results. It changes the figure, denominators, table, summary and current-selection downloads together. No analysis runs in this browser.

Python · All participants · 144 computed rows. Review population counts and exact values in the table below.

Are missing assessments isolated gaps or trailing runs within individual participants? All participants. For every selected roster subject retain scheduled weeks 0, 4, 8 and 12. Nonmissing positive diameter in mm is Observed; an explicitly missing value is Missing. Each row includes the full selected arm-visit observed count and roster denominator. Classify complete, all-missing, trailing-missing, or intermittent/early-missing histories. No imputation, interval, multiplicity adjustment or dropout model. Exact values follow in the table.

CSV · all three strata (overlapping; do not sum)

Values behind this selection

The table scrolls within this panel. All computed rows are included in the current-selection CSV and JSON.

Display rounded to three decimals. Downloaded CSV/JSON retains analysis precision. “Unavailable” is not zero.

Arm-visit counts repeat on each subject row. Deduplicate them before summing. Compare exact completion counts.

Subject-by-visit observation matrix · Python · All participants
PopulationTreatment armFictional subjectWeekObservation statusObservation historyObserved nScheduled roster NMissing n
AllReferenceS010ObservedIntermittent or early missing18180
AllReferenceS014ObservedIntermittent or early missing18180
AllReferenceS018MissingIntermittent or early missing15183
AllReferenceS0112ObservedIntermittent or early missing18180
AllReferenceS020ObservedComplete18180
AllReferenceS024ObservedComplete18180
AllReferenceS028ObservedComplete15183
AllReferenceS0212ObservedComplete18180
AllReferenceS030ObservedComplete18180
AllReferenceS034ObservedComplete18180
AllReferenceS038ObservedComplete15183
AllReferenceS0312ObservedComplete18180
AllReferenceS040ObservedComplete18180
AllReferenceS044ObservedComplete18180
AllReferenceS048ObservedComplete15183
AllReferenceS0412ObservedComplete18180
AllReferenceS050ObservedComplete18180
AllReferenceS054ObservedComplete18180
AllReferenceS058ObservedComplete15183
AllReferenceS0512ObservedComplete18180
AllReferenceS060ObservedComplete18180
AllReferenceS064ObservedComplete18180
AllReferenceS068ObservedComplete15183
AllReferenceS0612ObservedComplete18180
AllReferenceS070ObservedComplete18180
AllReferenceS074ObservedComplete18180
AllReferenceS078ObservedComplete15183
AllReferenceS0712ObservedComplete18180
AllReferenceS080ObservedComplete18180
AllReferenceS084ObservedComplete18180
AllReferenceS088ObservedComplete15183
AllReferenceS0812ObservedComplete18180
AllReferenceS090ObservedIntermittent or early missing18180
AllReferenceS094ObservedIntermittent or early missing18180
AllReferenceS098MissingIntermittent or early missing15183
AllReferenceS0912ObservedIntermittent or early missing18180
AllReferenceS100ObservedComplete18180
AllReferenceS104ObservedComplete18180
AllReferenceS108ObservedComplete15183
AllReferenceS1012ObservedComplete18180
AllReferenceS110ObservedComplete18180
AllReferenceS114ObservedComplete18180
AllReferenceS118ObservedComplete15183
AllReferenceS1112ObservedComplete18180
AllReferenceS120ObservedComplete18180
AllReferenceS124ObservedComplete18180
AllReferenceS128ObservedComplete15183
AllReferenceS1212ObservedComplete18180
AllReferenceS130ObservedComplete18180
AllReferenceS134ObservedComplete18180
AllReferenceS138ObservedComplete15183
AllReferenceS1312ObservedComplete18180
AllReferenceS140ObservedComplete18180
AllReferenceS144ObservedComplete18180
AllReferenceS148ObservedComplete15183
AllReferenceS1412ObservedComplete18180
AllReferenceS150ObservedComplete18180
AllReferenceS154ObservedComplete18180
AllReferenceS158ObservedComplete15183
AllReferenceS1512ObservedComplete18180
AllReferenceS160ObservedComplete18180
AllReferenceS164ObservedComplete18180
AllReferenceS168ObservedComplete15183
AllReferenceS1612ObservedComplete18180
AllReferenceS170ObservedIntermittent or early missing18180
AllReferenceS174ObservedIntermittent or early missing18180
AllReferenceS178MissingIntermittent or early missing15183
AllReferenceS1712ObservedIntermittent or early missing18180
AllReferenceS180ObservedComplete18180
AllReferenceS184ObservedComplete18180
AllReferenceS188ObservedComplete15183
AllReferenceS1812ObservedComplete18180
AllInvestigationalS190ObservedComplete18180
AllInvestigationalS194ObservedComplete17181
AllInvestigationalS198ObservedComplete15183
AllInvestigationalS1912ObservedComplete17181
AllInvestigationalS200ObservedComplete18180
AllInvestigationalS204ObservedComplete17181
AllInvestigationalS208ObservedComplete15183
AllInvestigationalS2012ObservedComplete17181
AllInvestigationalS210ObservedComplete18180
AllInvestigationalS214ObservedComplete17181
AllInvestigationalS218ObservedComplete15183
AllInvestigationalS2112ObservedComplete17181
AllInvestigationalS220ObservedComplete18180
AllInvestigationalS224ObservedComplete17181
AllInvestigationalS228ObservedComplete15183
AllInvestigationalS2212ObservedComplete17181
AllInvestigationalS230ObservedComplete18180
AllInvestigationalS234ObservedComplete17181
AllInvestigationalS238ObservedComplete15183
AllInvestigationalS2312ObservedComplete17181
AllInvestigationalS240ObservedComplete18180
AllInvestigationalS244ObservedComplete17181
AllInvestigationalS248ObservedComplete15183
AllInvestigationalS2412ObservedComplete17181
AllInvestigationalS250ObservedIntermittent or early missing18180
AllInvestigationalS254ObservedIntermittent or early missing17181
AllInvestigationalS258MissingIntermittent or early missing15183
AllInvestigationalS2512ObservedIntermittent or early missing17181
AllInvestigationalS260ObservedComplete18180
AllInvestigationalS264ObservedComplete17181
AllInvestigationalS268ObservedComplete15183
AllInvestigationalS2612ObservedComplete17181
AllInvestigationalS270ObservedComplete18180
AllInvestigationalS274ObservedComplete17181
AllInvestigationalS278ObservedComplete15183
AllInvestigationalS2712ObservedComplete17181
AllInvestigationalS280ObservedComplete18180
AllInvestigationalS284ObservedComplete17181
AllInvestigationalS288ObservedComplete15183
AllInvestigationalS2812ObservedComplete17181
AllInvestigationalS290ObservedComplete18180
AllInvestigationalS294ObservedComplete17181
AllInvestigationalS298ObservedComplete15183
AllInvestigationalS2912ObservedComplete17181
AllInvestigationalS300ObservedComplete18180
AllInvestigationalS304ObservedComplete17181
AllInvestigationalS308ObservedComplete15183
AllInvestigationalS3012ObservedComplete17181
AllInvestigationalS310ObservedComplete18180
AllInvestigationalS314ObservedComplete17181
AllInvestigationalS318ObservedComplete15183
AllInvestigationalS3112ObservedComplete17181
AllInvestigationalS320ObservedComplete18180
AllInvestigationalS324ObservedComplete17181
AllInvestigationalS328ObservedComplete15183
AllInvestigationalS3212ObservedComplete17181
AllInvestigationalS330ObservedIntermittent or early missing18180
AllInvestigationalS334ObservedIntermittent or early missing17181
AllInvestigationalS338MissingIntermittent or early missing15183
AllInvestigationalS3312ObservedIntermittent or early missing17181
AllInvestigationalS340ObservedComplete18180
AllInvestigationalS344ObservedComplete17181
AllInvestigationalS348ObservedComplete15183
AllInvestigationalS3412ObservedComplete17181
AllInvestigationalS350ObservedComplete18180
AllInvestigationalS354ObservedComplete17181
AllInvestigationalS358ObservedComplete15183
AllInvestigationalS3512ObservedComplete17181
AllInvestigationalS360ObservedTrailing missing18180
AllInvestigationalS364MissingTrailing missing17181
AllInvestigationalS368MissingTrailing missing15183
AllInvestigationalS3612MissingTrailing missing17181

Why this figure, and what it estimates

A fixed-order subject-by-visit matrix exposes observation histories hidden by aggregate completion percentages. O and X preserve meaning without color.

Analysis contract

For every selected roster subject retain scheduled weeks 0, 4, 8 and 12. Nonmissing positive diameter in mm is Observed; an explicitly missing value is Missing. Each row includes the full selected arm-visit observed count and roster denominator. Classify complete, all-missing, trailing-missing, or intermittent/early-missing histories. No imputation, interval, multiplicity adjustment or dropout model.

Assigned fictional arms; baseline = scheduled Week 0. No visit windows or treatment switching. Subjects are independent; domain scores are invented 0–100 points. Missing outcomes stay missing; missing scheduled rows are rejected.

Full input, units, missingness, interval, rounding and tolerance specification

Do not overinterpret

A trailing run is not proof of withdrawal, censoring or cause of missingness. The pattern does not identify MCAR, MAR or MNAR. Arm-visit counts repeat on every subject row: deduplicate them before summarizing. All/F/M strata overlap. Never publish authorized real subject identifiers without a separate privacy review.

Alternative views

Use visit-completion curves for aggregate trajectories, disposition tables for reasons, and prespecified missing-data sensitivity analyses for inference.

Read, reproduce, then adapt

Four-step review guide · Compare complementary figures

Locate S01 and S36 in All participants. Explain why S01 is intermittent while S36 is trailing. Count Observed marks at Week 8 within each arm and reconcile 15/18 with the completion template. Explain why neither pattern establishes the mechanism of missingness.

  1. Open the selected CSV and reconcile counts before comparing outcomes.
  2. Run the minimal example locally, then inspect the native Figure or ggplot object.
  3. For your own authorized data, explicitly map subject, arm, scheduled time and units. Keep expected missing visits as rows, document exclusions, and revise the contract for your trial design.
  4. Run invalid-input and known-answer checks before comparing R/Python outputs.

Cross-domain adaptation notes and clinical coverage matrix

Executed source and separate QC layers

Original author: Jaime Yan. Personal noncommercial use only. License · Required citation · Upstream attribution

Python reusable implementation · R reusable implementation · Complete reproducible source bundle

Extract the complete bundle and run these commands from its root. Recorded environments: Python · R.

python examples/visit_matrix.py All
Rscript --vanilla examples/visit_matrix.R All
python scripts/render_visit_matrix.py --rscript Rscript
Numerical validation
288 subject-visit rows independently agree in R/Python; counts and classifications exact.
Data QC
Keys, schedules, units, finite ranges, empty and sparse populations tested.
Export QC
CSV/JSON selection, parsed SVG, PNG dimensions, readable PDF text and Python text bounds checked.
Package-risk assessment
Not run. Numerical agreement is not package-risk or regulatory validation.
Browser evidence
Recorded separately in the local delivery report; no accessibility certification claimed.

Machine-readable numerical QC · Source, input and artifact hashes

Input: the library's original synthetic generator, seed 20260921, 36 fictional participants. Separate from CDISC Pilot. The deterministic missingness mechanism is described in the contract. No patient or employer records.