Position effects, machine equivalence and capability from build-plate CMM data.Runs in your browser. Files are not uploaded. Works offline after first load.
Drop measurement / positions / tolerance CSV or a .3mf here, or
All characteristics
Method and limits
Tests run on deviation from nominal (value if no nominal). Nominal defaults to the LSL/USL midpoint.
Zones are an equal grid over the plate rectangle you set, not over the parts' bounding box, so a zone is a fixed physical region.
With a build or machine column, positional tests are adjusted for build offsets (indicator terms; zone ANOVA becomes a nested-model F test). Without that, a machine offset shows up as noise, or as a fake position effect if machines used different layouts. Untick to test raw pooled data.
Regressions are one predictor at a time (plus build terms). Distance along gas flow is measured from the upstream plate edge, so for ±X it carries the same information as x; it is listed so the report states the flow direction. A combined x+y+r model was rejected: r is nearly collinear with x and y on a filled plate and the coefficients become unreadable.
Δ = slope × observed range of the predictor. % tol = Δ / (USL − LSL); for a one-sided tolerance the width is |limit − nominal|. The equivalence margin uses the same width.
p-values are not adjusted for multiple tests. With 6 positional tests per characteristic, 0.05/6 ≈ 0.008 is a rough Bonferroni bar.
Machine comparison: Welch t-test, and TOST (Schuirmann 1987) with Welch df at α = 0.05. Equivalent when the 90% CI of the difference lies inside ±margin. A large Welch p is not evidence of equivalence; that is what TOST is for.
Position × machine (2+ machines): two-way ANOVA zone × machine with interaction, Type II sums of squares (each main effect adjusted for the other, interaction for both; F against the full-model residual). Unbalanced cells are fine; skipped if any zone/machine cell has fewer than 2 parts. Gas-flow gradient by machine: OLS of deviation on flow distance + machine indicators + flow × machine; each interaction coefficient is that machine's slope minus the first machine's (alphabetical), t-test p; with 3+ machines a joint F. Builds within a machine are not modeled here, so build shifts inflate the residual and the machine main effect. Checked against Montgomery, Design and Analysis of Experiments, Example 5.1, in test.js.
Ppk uses overall sd. Cpk uses pooled within-build sd; with one build Cpk = Ppk. No c4 bias correction. 95% CI on Cpk: Bissell (1990), Cpk ± 1.96√(1/(9n) + Cpk²/(2(n−1))). Assumes normal data; no normality test is run.
t and F tail areas come from the regularized incomplete beta function (continued fraction, Numerical Recipes §6.4). Regression is checked against NIST StRD Norris in test.js.
.3mf: position = build item transform applied to the mesh bounding-box center; for objects built from components only the item translation is used. Matched to part id by item partnumber, object name or object id.
Not modeled: spatial autocorrelation between neighbouring parts, outliers, non-normal data, recoater-direction effects other than through y.