STATISTICAL QUALITY · 6 min

Process Stability: Telling Real Change from Everyday Noise

Every process wobbles. Here’s how to tell a real change from everyday noise, and how my Process Stability Lab does it.

The problem: real change or everyday noise?

Every process wobbles. Think of a tool on an assembly line that tightens bolts. It never puts exactly the same torque, or twisting force, on two of them, even when nothing is wrong. Most of that wobble is everyday noise: small, random differences in parts, material and timing. But sometimes something real changes. A new batch of fasteners runs tight, a tool wears down, or a clutch starts to slip. Quality engineers call the everyday noise common-cause variation, and a real change a special cause.

The hard part is telling the two apart while the line is running. React to noise and you make things worse, because every adjustment adds its own error. Miss a real change, and bad parts pile up before anyone notices. Factories have used statistical process control (SPC) to handle this for about a century. The idea is simple. Learn what normal looks like and draw a band around it. Then act only when the data leave the band, or form a pattern that chance rarely makes.

I built the Process Stability Lab so you can see this happen. You watch parts come off the line, break the process on purpose, and see what the chart catches and how fast. It also shows what the chart can’t see.

How the lab works

The lab plots the torque of each part as one dot on a control chart. That’s a running graph of a measurement, with a center line and two limit lines that mark the edges of normal. The first 20 parts are the baseline, the sample that shows what normal looks like. Their average becomes the center line. Their typical part-to-part scatter, written σ (sigma), sets the control limits, three σ above and below the center line. Then those limits are frozen, and every later part is checked against them.

Once the baseline is done, you can switch on four kinds of trouble at any time. The average can jump. A wearing tool can push torque up a little with every part. Parts can scatter more, or less. Or an operator can nudge the setting after every part to cancel the last error. That’s called tampering. Beside the chart is a stack of smoothed histograms, which are bar charts of how often each value shows up. Each one covers 20 parts in a row, and older ones sit farther back. A shift, a change in spread and tampering show up there as changes in shape, not as single dots.

For the technical reader: it’s an individuals chart, with one measurement per dot. The target is 12.0 N·m (newton-meters, a unit of torque), and short-term σ is 0.15. A seeded random generator makes one part at a time. The baseline’s moving ranges, the jumps from one part to the next, estimate short-term variation. The mean shift runs from 0.5 to 3σ (default +1.5σ). Tool-wear drift adds +0.012 N·m per part until the tool hits its 0.75 N·m wear limit and gets replaced. The variation change multiplies σ by 0.5 to 3 (default ×2). Each ridge in that stack is a kernel-density estimate (one way to draw a smoothed histogram) of 20 parts in a row.

Freezing the limits is the whole point. If you recalculated them after a shift, the unusual parts would help decide what normal is. The warning sign would partly disappear into the new limits.

The math

For each pair of baseline parts in a row, the moving range is the size of the jump between them: MRᵢ = |xᵢ − xᵢ₋₁|. The lab estimates σ = MR̄ / 1.128, where MR̄ is the average moving range. The upper control limit is UCL = x̄baseline + 3σ, and the lower one is LCL = x̄baseline − 3σ. Here x̄baseline is the baseline average. Spec limits (short for specification limits) are a separate thing. They’re requirements the part has to meet, not control limits worked out from the data.

Capability means how well the process fits inside the spec limits. The lab shows it two ways. Cp = (USL − LSL) / 6σ̂, where USL and LSL are the upper and lower spec limits. It uses the frozen baseline σ̂. The hat just means it’s the estimated σ. So Cp describes what the baseline process could do, and the average never affects it. Ppk = min[(USL − x̄),(x̄ − LSL)] / 3s. It uses the average and the standard deviation s (another measure of scatter) of the last 30 parts. So it shows what the process is doing right now. Don’t read either number until you’ve checked that the process is stable.

Using the lab and reading the chart

The disturbance buttons change the process after the baseline. The tolerance slider only changes how wide the spec limits are. Every new part is checked against four alarm rules, using the standard Nelson rule numbers. Rule 1: one point beyond 3σ̂. Rule 5: two out of three points beyond 2σ̂ on the same side. Rule 3: six points in a row steadily rising or falling. Rule 2: nine points in a row on one side of the center line. The signal log records the first part of each alarm. The lab also times how fast a change gets caught: it counts from the change to the first alarm that starts after it. It only does this when nothing else was disturbed and the last nine parts were normal. Otherwise you can’t pin an alarm on one change. A point outside the frozen control limits is evidence that the process no longer matches its baseline. A part inside the spec limits doesn’t make the process stable. And a stable process isn’t automatically capable. Tampering shows why that difference matters. That’s the lab’s Over-adjusting button, where each new setting undoes the last miss from the target. Every adjustment looks reasonable, and the average stays on target. But the variance (σ squared) doubles.

What the lab assumes, and what it leaves out

The model assumes a baseline that holds steady over time and follows a normal distribution, the familiar bell curve. It uses the moving-range method, which fits when you measure one part at a time. It runs four of the eight Nelson rules (1, 2, 3 and 5), not all of them. Without rule 7, a drop in variation is never flagged. It doesn’t include rational subgrouping (measuring small groups of parts together). It also skips autocorrelation correction (for when each part tends to look like the one before) and checking the measuring system itself. And twenty baseline points leave the limits themselves a bit uncertain. Across 400 seeds, or random runs, the median run before a first false alarm was 55 parts. With the true limits, it was 84.

Checks that it works right

With no disturbance, later parts should stay centered on the same baseline, and alarms should be rare false alarms. With the true limits, the four rules together fire on about 1.1% of parts from a stable process. That matches the exact math, rule by rule. Adding a shift must move the dots without moving the frozen control limits. In an automated test with no screen, the limits stay exactly the same, bit for bit. That holds after 2,500 parts with problems switched on, made bigger or smaller, and tools changed. Widening the spec tolerance must change Cp and Ppk without changing the control limits. A shift in the average must lower Ppk and leave Cp the same. Tampering must push σ toward √2 times the baseline. Over 50,000 seeded parts, it came out at 1.43. Bigger shifts must be caught sooner. Starting from a quiet, stable run, the median was 21 parts at 0.5σ, 5 at 1.5σ and 1 at 3σ. Checks like these matter more than whether the chart just looks believable.

← From Vibe Coding to Engineering: How I Work With AI Coding Agents in KiroAll WritingFactorial Experiments: Why You Should Test Settings Together, Not One at a Time →

The Inner Universe

Still in the works.

I’m still writing this part of the site: a map of the big questions I keep coming back to. Check back soon.