By MCP Analytics Team | Published , updated
One row per customer is a different problem from one row per customer per month. The shape of the file narrows which methods can apply to it.
The analyses filed under this data shape. Each card opens the analysis page, where you can run it on a file.
Which rows do not fit the usual pattern, including in combination, and what makes each stand out.
Did a launch, price change or policy move the series?
When did my metric shift?
Is this process stable over time, and can it hold its specification?
How good are my forecasts actually? Rolling-origin backtest with MAPE, MASE, and bias diagnostics against naive baselines.
Does the split of your orders between channels add up?
How much does demand drop when you raise the price?
Is there a seasonal pattern, and how big is it?
How risky is this series? Rolling volatility, drawdowns, and simple historical VaR.
The data. standard_control_charts_v2.csv, the published sample file for Control chart and process capability: 110 rows; columns batch_id, produced_at, fill_volume_ml, line. Sample data, not a customer's.
The calculation. Python, standard library only. This exact code ran against the file when this page was built, and printed the output below it.
import csv
rows = list(csv.DictReader(open("standard_control_charts_v2.csv")))
rows.sort(key=lambda r: r["produced_at"])
for line in sorted({r["line"] for r in rows}):
x = [float(r["fill_volume_ml"]) for r in rows
if r["line"] == line and r["fill_volume_ml"]]
mr = [abs(b - a) for a, b in zip(x, x[1:])] # moving ranges
centre = sum(x) / len(x)
sigma = sum(mr) / len(mr) / 1.128 # d2 constant for n = 2
lo, hi = centre - 3 * sigma, centre + 3 * sigma
out = [round(v, 2) for v in x if v < lo or v > hi]
print(line, len(x), "batches, centre", round(centre, 2),
"limits", round(lo, 2), "to", round(hi, 2), "outside:", out)
Line A 55 batches, centre 250.38 limits 245.71 to 255.04 outside: [245.56, 255.53]
Line B 55 batches, centre 250.51 limits 244.81 to 256.22 outside: []
What it says. Each line gets its own centre and limits three standard deviations either side, with the standard deviation estimated from the average jump between consecutive batches so that a slow drift does not widen its own limits. Points outside the limits are the batches worth investigating; the printout lists them by volume.
What it does not say. A point outside the limits is a signal to look, not proof of a fault, and a process can drift inside its limits. The library analysis adds run rules for those patterns and a capability index against the specification.
Run Control chart and process capability on this file or your own, or open its stored sample report.
The stored sample report for Anomaly detection. Each analysis has its own report layout; open its page to see what it returns.
Tell us what went wrong, in your own words. We capture the page you're on automatically, so no need to describe where you are.