Support Matrix
This page is a reference for the implementation constraints and supported configurations of the Numerics.NET SPC API. Use it to verify that your data shape, chart type, and analysis options are compatible before writing production code.
Each table is self-contained. Cross-references to conceptual pages are listed in Chart type vs input representations and in the Choosing the Right Analysis page, which contains decision guidance to accompany the tables here.
Chart type vs input representations
The following table lists which input representations are accepted for each chart type. "Sequence" means a flat IEnumerable<double> or array. "Subgrouped" means a jagged or grouped collection where each element represents one subgroup. "Count/size pair" means a pair of parallel sequences (observed count and sample size).
Chart | Input types | Notes |
|---|---|---|
I‑MR | Sequence | One observation per period. Subgroup size is always 1. Moving range window defaults to 2. |
XBar‑R | Subgrouped | Subgroup size must be between 2 and 8 inclusive. See subgroup-size constraints. |
XBar‑S | Subgrouped | Subgroup size must be at least 2; no upper bound. Preferred over XBar‑R for subgroup sizes larger than 8. |
P | Count/size pair | Defective count and sample size per period. Sample size may vary between periods (variable subgroup). |
NP | Count/size pair (equal size required) | All sample sizes must be equal. Limits are expressed as a count, not a proportion. |
C | Sequence (integer counts) | Defect count per inspection unit. Inspection area must be constant. Fractional counts are accepted but unusual. |
U | Count/size pair | Defects per unit. Inspection area (size) may vary between periods (variable subgroup). |
EWMA | Sequence or subgrouped (means) |
When subgrouped data is provided the subgroup mean
is charted. The smoothing parameter |
CUSUM | Sequence or subgrouped (means) | Tabular CUSUM. Reference value k and decision interval h are required. Subgroup means are standardized before accumulation. |
Subgroup-size constraints
For variables charts that require subgroups, the subgroup size determines which within-group dispersion estimator is used and affects the unbiasing constants applied to control limits.
Chart | Min subgroup size | Max subgroup size | Notes |
|---|---|---|---|
I‑MR | N/A (individuals) | N/A (individuals) | Moving range span is configurable; default is 2 consecutive observations. |
XBar‑R | 2 | 8 | The range statistic loses efficiency rapidly for subgroups larger than 8. Use XBar‑S for larger subgroup sizes. |
XBar‑S | 2 | Unlimited |
The |
Equal vs variable subgroup support
Variable subgroup sizes (where sample size differs from period to period) require pointwise control limits. Charts that require equal subgroup sizes will throw if unequal sizes are provided.
Chart | Equal-size | Variable-size | Notes |
|---|---|---|---|
I‑MR | Always (n = 1) | — | Subgroup concept does not apply. |
XBar‑R | Yes | No | All subgroups must have the same size. Use XBar‑S if subgroup sizes are unequal. |
XBar‑S | Yes | Yes |
Variable-size subgroups produce pointwise limits
because |
P | Yes (scalar limits) | Yes (pointwise limits) | When all sample sizes are equal the scalar limit is exact. When sizes vary, use the pointwise limit vectors for rendering. |
NP | Yes (required) | No | NP limits depend on a single constant n. Unequal sizes are not permitted. |
C | Always (area = 1) | — | Inspection area is implicitly constant. Use U for variable inspection areas. |
U | Yes (scalar limits) | Yes (pointwise limits) | Same pattern as P: equal areas produce scalar limits; variable areas produce pointwise limits. |
EWMA | Yes | No | EWMA limits are time-varying by design (they widen until steady state). Variable subgroup sizes are not supported. |
CUSUM | Yes | No | Standardization requires a fixed subgroup size. Variable subgroup sizes are not supported. |
Minimum sample requirements
These are the absolute minimums below which the library will refuse to compute limits or will return double.NaN for limit fields. For reliable statistical inference, 20–25 subgroups are conventionally recommended.
Chart | Minimum subgroup count | Minimum total observations | Notes |
|---|---|---|---|
I‑MR | 2 | 2 | At least 2 observations are required to compute a moving range. |
XBar‑R | 2 | 4 (2 subgroups × min size 2) | Conventional minimum is 20 subgroups for stable limit estimates. |
XBar‑S | 2 | 4 (2 subgroups × min size 2) | Same conventional guidance as XBar‑R. |
P | 1 | 1 | A p̄ can be computed from a single subgroup, but limits are unreliable with fewer than 20 subgroups. |
NP | 1 | n (one full sample) | Same guidance as P. |
C | 1 | 1 | c̄ computed from all periods; limits are Poisson-based and valid from a single period mathematically. |
U | 1 | 1 | Same guidance as C. |
EWMA | 2 | 2 | A single observation produces a trivial chart. At least 2 observations are needed for meaningful smoothing. |
CUSUM | 2 | 2 | The cumulative sum starts at 0; meaningful interpretation requires at least 2 periods. |
Scalar vs pointwise limit representation
Scalar limits are single double values that apply uniformly to every point on the chart. Pointwise limits are parallel vectors of the same length as Values, one limit value per plotted point. Always prefer the pointwise vectors when rendering charts for variable-sample charts; the scalar value on those charts represents an average limit and is suitable only for summary reporting.
Chart | Scalar limits | Pointwise limits | When to use pointwise |
|---|---|---|---|
I‑MR (X chart) | Yes | No | Scalar limits are exact; no pointwise vectors are populated. |
I‑MR (MR chart) | Yes | No | Scalar limits are exact. |
XBar‑R (XBar chart) | Yes | No | Scalar limits are exact. |
XBar‑R (R chart) | Yes | No | Scalar limits are exact. |
XBar‑S (XBar chart) | Yes (equal sizes) / average (variable) | Yes (variable sizes) | Use pointwise vectors whenever subgroup sizes differ across periods. |
P (equal n) | Yes | No | Scalar limits are exact. |
P (variable n) | Yes (average) | Yes | Always use the pointwise UpperControlLimits / LowerControlLimits vectors when rendering. The scalar average limit is misleading for individual points. |
NP | Yes | No | Equal sizes required; scalar limits are exact. |
C | Yes | No | Scalar limits are exact. |
U (equal area) | Yes | No | Scalar limits are exact. |
U (variable area) | Yes (average) | Yes | Same guidance as P (variable n): always render from pointwise vectors. |
EWMA | Yes (steady-state) | Yes (transient phase) | Limits widen during the initial transient before reaching steady state. Use the pointwise vectors for accurate rendering of the full chart. |
CUSUM | Yes (decision interval h) | No | The scalar decision interval applies uniformly. The upper and lower CUSUM statistics are in the UpperCusumValues and LowerCusumValues vectors on CusumChart. |
Sigma-estimator validity by context
The SigmaEstimator enum controls how within-process variation is estimated for limit calculation. Not all estimators are valid in every context. Supplying an incompatible estimator throws an ArgumentException.
Estimator | Individuals (I‑MR) | Subgrouped (XBar‑R, XBar‑S) | Notes |
|---|---|---|---|
Yes (default) | No | Estimates σ from the average moving range of consecutive individuals. Invalid for subgrouped data. | |
No | XBar‑R (default for n ≤ 8) |
Estimates σ from the average subgroup range | |
No | XBar‑S (default for all n) |
Estimates σ from the average subgroup standard
deviation | |
Yes | Yes |
Uses the overall (long-term) standard deviation
of all observations. Produces performance limits
( |
Persistence support
All top-level result types produced by the SPC API are decorated for System.Text.Json serialization. Deserialization requires the same assembly version as the serializing runtime; no migration shims are provided across major versions.
Result type | JSON serialize | JSON deserialize |
|---|---|---|
ControlChart (I‑MR) | Yes | Yes |
ControlChart (XBar‑R) | Yes | Yes |
ControlChart (XBar‑S) | Yes | Yes |
ControlChart (P) | Yes | Yes |
ControlChart (NP) | Yes | Yes |
ControlChart (C) | Yes | Yes |
ControlChart (U) | Yes | Yes |
ControlChart (EWMA) | Yes | Yes |
ControlChart (CUSUM) | Yes | Yes |
Yes | Yes | |
Yes | Yes |
Rule evaluation by chart type
Control rules (Nelson, Western Electric) are defined for classic Shewhart charts whose points are approximately normally distributed around a stable center. Applying Shewhart-derived rules to time-weighted charts (EWMA, CUSUM) produces a high false-alarm rate because those chart statistics are autocorrelated by construction.
Chart | Nelson rules | Western Electric rules | Notes / cautions |
|---|---|---|---|
I‑MR (X chart) | Yes | Yes | Run rules apply to the X chart. Applying rules to the MR chart is unusual and not recommended. |
XBar‑R (XBar chart) | Yes | Yes | Run rules apply to the XBar chart. Rules on the R chart have limited statistical basis; apply with caution. |
XBar‑S (XBar chart) | Yes | Yes | Same guidance as XBar‑R. |
P | Yes (with caution) | Yes (with caution) | Attribute data is approximately normal only when np̄ ≥ 5 and n(1−p̄) ≥ 5. Rule sensitivity is reduced for sparse defective rates. |
NP | Yes (with caution) | Yes (with caution) | Same normality caveat as P. |
C | Yes (with caution) | Yes (with caution) | Poisson approximation to normal improves as c̄ increases. Rules are unreliable when c̄ < 5. |
U | Yes (with caution) | Yes (with caution) | Same caveat as C. |
EWMA | Not recommended | Not recommended | EWMA statistics are serially correlated. Applying Shewhart run rules substantially inflates the false-alarm rate. Use the decision interval only. |
CUSUM | Not recommended | Not recommended | CUSUM statistics accumulate deviations and are never independent. Run rules are meaningless on the cumulative sum series. |