Pick an experiment
Seven experiments sit on one page. Choose one from the navigator or scroll through them.
Each experiment answers one method question and shows when the method works and when it can mislead. It runs on synthetic data; the computation happens in this browser with WebAssembly.
A short narrated tour: how to use the seven experiments, how to read a threshold and where to start.
Lab is a playground for the methods behind industrial AI. Pit five anomaly detectors against the same data, and see which one catches the spike, the drift, or the shift. Slide the threshold, and watch the trade-off between false alarms and missed events. Explore OEE, process capability, PID tuning, aliasing and forecasts, each with a plain verdict. It runs in C and WebAssembly, in your browser. The data is synthetic: methods, not field accuracy.
Narration: synthetic voice (Piper, voice “Joe”, CC0 public domain). Captions are burned into the video.
Seven experiments sit on one page. Choose one from the navigator or scroll through them.
Change a scenario, threshold, setting or frequency; the result updates at once.
The verdict, the chart and the numbers answer the same question. Each experiment states its limits in a note.
Shows how many of four kinds of anomaly five methods catch on the same synthetic series; the true labels are known, so it can be measured.
All are synthetic. The test part is the last half of the series.
1 is balanced. Raising it makes the methods alarm sooner, and the number of alarms grows.
Computing…
Shaded areas are the true events.
A red cell is an alarm. The top lane shows the true events.
A high F1 means precision and recall are both good.
| Method |
|---|
Precision = TP / (TP + FP), recall = TP / (TP + FN), F1 = 2TP / (2TP + FP + FN). Counts use the test part only.
Move one method’s alarm threshold and watch the trade-off between false alarms and missed events.
The series and scenario come from experiment 1; this experiment uses the same series.
The threshold is in the method’s own score units. Moving right makes alarms harder to raise.
Computing…
Up and to the right is better. The marked point is the current threshold.
The peak is the threshold with the best F1.
Here the threshold is chosen on the same test part, so the result is optimistic. For a real final test, choose the threshold on a separate part and run the final test once.
For a threshold t, alarm: score > t. TP, FP, FN and TN are counted for each t; precision, recall and F1 follow. If there is no alarm, precision is undefined and is not drawn.
Shows how much of the planned time became good output, and in which order the losses occur.
Computing…
Starts at planned time and subtracts each loss in turn; what remains is OEE.
The needle shows the OEE value; colours mark the 60 and 85% bands.
The 85% line is an often-quoted benchmark, not your target.
A = run / planned time · P = (ideal cycle × total count) / (run time × 60) · Q = good / total count · OEE = A × P × Q.
If performance exceeds 100%, the ideal cycle time or the count may be wrong. The value is not clipped; check the inputs.
Compares the spread of measurements with the specification limits and computes Cp, Cpk, Pp and Ppk.
One measurement per line. Decimal comma accepted. At least 20 measurements.
Computing…
Red bars are outside specification. The dashed curve is the normal distribution.
Cp = (USL − LSL) / (6σw) · Cpk = min(USL − μ, μ − LSL) / (3σw) · Pp and Ppk are the same formulas with the overall σ.
σw is estimated from the moving range of consecutive measurements (MR / 1.128). Normality is checked with the Jarque–Bera test; if p is low, the Cp and ppm estimates may be rough.
Shows how a simple process settles under a PID controller; change the settings or ask for a suggestion.
Computing…
The dashed line is the expected response if the suggestion is applied.
The output is limited between 0% and 100%.
Process: τ·dy/dt = −y + K·u(t − θ), first order with dead time. Controller: u = Kp·e + (Kp/Ti)·∫e dt + Kp·Td·de/dt, limited to 0–100%. Target 50%.
IAE = ∫|target − process value| dt (lower = better). The suggestion searches a Kp × Ti × Td grid (11 × 5 × 2, at most 110 simulations) for the setting with the lowest IAE and overshoot under 20%. It holds only for this process model.
Shows that sampling a signal at a fixed rate can make it appear at a wrong frequency.
A one-second record. The sampling rate fs is the number of samples per second.
Computing…
Dots are samples; the line passes through them.
Where the true frequency and the Nyquist limit sit.
Nyquist limit = fs / 2. Apparent frequency = |f − round(f / fs) · fs|. If f < fs/2, the apparent frequency is f itself.
Samples are taken at t = k / fs. The experiment shows the sampling effect of one channel; it does not model an anti-aliasing filter.
Forecasts a seasonal series with three simple and two more complex methods and compares their errors on the test part.
The series is 240 hours: the first 192 are training and the last 48 are the test.
Computing…
The vertical line separates training from testing. Lines beyond the chart are clipped.
A shorter bar is better.
| Method | MAE |
|---|
Naive: last training value. Seasonal naive: the value 24 hours earlier. 24-hour average: mean of the last 24 training values.
Holt: over a grid of α, β, φ (7 × 4 × 4), the values minimising one-step MAE; forecast l + b·(φ + … + φh). Kalman: KutupML.trendFit by maximum likelihood; forecast level + slope × h.
MASE = MAE / (mean absolute error of the naive forecast in training). Holt and Kalman do not model seasonality; the Kalman slope can follow the cycle, which is why it can drift off.
It shows common engineering and data methods in small experiments where you can see when each works and when it can mislead: anomaly detectors, alarm thresholds, OEE, process capability, PID control, sampling and forecasting.
No. Every series is generated mathematically and stays the same on each visit (fixed seed). They do not represent a real plant; they only show how the methods behave.
An artificial spike is exactly as clear as it was designed to be. Real data add sensor noise, maintenance effects and missing values, which make the task harder. A good score in an experiment should therefore be read as an upper bound for the field.
No. Calculations, charts and exported files run in your browser. Numbers you paste are not sent to any server, and they are removed when you close the page.
A complex model adds nothing unless it beats a simple rule. Baselines such as seasonal naive or the robust z-score are cheap and easy to explain; a new method earns its place only if it beats them with a lower error.
Why a single accuracy percentage can hide failure on rare events.
Availability, performance and quality must use consistent production boundaries.
Work through Cp and Cpk on a hypothetical example, see how centring changes the result, and learn the conditions that must hold before the indices can be interpreted.
A forecasting model does not earn its complexity unless it measurably beats a method as simple as “repeat the last value”.
Let’s review your data source, your existing system and the decision you want to improve.