MixShiftSynthetic example

A falling headline. Two rising groups.

Separate changes within groups from changes in the mix.

Import a count-table image

English OCR runs locally after downloading the runtime and model from jsDelivr. No image is uploaded. Use synthetic or non-sensitive tables for this prototype. Read every count before applying.

Each row: group before_success before_total after_success after_total. Use a single-word label such as First-time. OCR may confuse letters and digits; corrections are manual.

GroupBefore successBefore totalAfter successAfter total

Scroll the table horizontally to see all counts.

Limits, sources and AI assistance

Use matched, consistently defined groups. Each total must be positive; missing groups are not imputed. Use 2–12 groups and at most 1,000,000 observations per period. A success must be a subset of its total. These arithmetic checks do not verify your data, a causal effect, statistical significance or a confidence interval. Audit exports contain every input label and count: review them before sharing.

This is a new educational implementation of established rate-decomposition ideas. See US Census: Standardization and Decomposition of Rates and Kitagawa (1955). No algorithm invention or measured learning improvement is claimed. All examples are synthetic.

OpenAI Codex assisted code, tests, explanations and design prompting; built-in Image Gen produced a visual concept. Optional Tesseract.js OCR runs in your browser; its runtime and English model are downloaded from jsDelivr when requested. The app has no paid inference API, accounts or analytics. Inputs stay in memory unless you download an audit.