# Analyst statistics: synthetic decision cases

Original authored teaching fixtures, not learner outcomes or real company data.
Executed with Python 3.12.0, NumPy 2.4.4 and SciPy 1.18.0. Run from this directory:

```text
python build_and_verify.py
```

This regenerates the named CSVs and verification-results.json within the lab and
runs twelve numerical/reference checks. NumPy and SciPy are external dependencies;
the script does not install packages or modify the environment.

## Cases and units

- `order_values.csv`: ten INR amounts, 100 through 180 by tens plus 2000.
  Sum 3260, mean 326, median 145. The large value is deliberately valid.
- `deliveries.csv`: eight durations in minutes: 10,20,20,25,30,40,100,240.
  Mean 60.625, median 27.5. The sample is deliberately small and skewed.
- `independent_groups.csv`: two separate groups of eight synthetic scores.
  Control mean 41.5, treatment mean 48.0. For the test exercise, assume independent
  units; a table cannot prove randomization or population representativeness.
- `paired_scores.csv`: eight people measured twice; after-minus-before differences
  5,7,4,6,8,5,7,6, mean 6. Person identity defines pairing. Before/after alone does
  not identify a causal intervention effect.
- `channel_segments.csv`: channel B has higher conversion within both difficulty
  segments, but A has higher overall conversion because the segment mix differs.
- `survey_segments.csv`: a synthetic target population is 20% engaged and 80%
  other, with segment means 5 and 2. Respondents are 80% engaged and 20% other.
  Respondent mean 4.4 versus target mean 2.6 under the explicitly supplied segment
  means. Real weighting does not automatically fix within-segment nonresponse.
- `ab_counts.csv`: 400/10000 control and 450/10000 treatment conversions. The
  observed absolute difference is 0.5 percentage points, relative lift 12.5%.
  A simple independent-proportion Wald interval includes zero and +1 percentage
  point. This is a teaching approximation, not a universal interval prescription.

## Simulation contracts

SD/SE and confidence-interval simulations draw independent Normal(100,20 SD)
observations, n=25, 5000 repetitions, with documented seeds. They demonstrate
properties under that model, not every real dataset. Bootstrap uses independent
resampling of the eight delivery observations with a percentile interval and an
explicit seed; it cannot repair selection bias or dependence.

Expected statistical values and versions are in verification-results.json.
Articles explain estimands, assumptions, effect sizes and limitations alongside
the code. A passing numerical test is not proof that an inferential method is
appropriate for a new business question.

`render_figures.py` regenerates original SVG/PNG illustrations for SD versus SE
and confidence-interval coverage. It uses Matplotlib 3.10.9 and the same documented
simulation seeds; figure-metadata.json records scope and numerical coverage.
`ANALYSIS_PLAN.md` is a complete teaching example for review, not a claim that a
live experiment was preregistered or run.
