FiWiControl/docs/spc.md

2.1 KiB

FiWiControl SPC — Shewhart and Hotelling T²

Package: **fiwicontrol.spc**
Implementation: **src/fiwicontrol/spc/** (shewhart.py, hotelling.py; lazy exports from **fiwicontrol/spc/__init__.py**)

Small statistical process control (SPC) building blocks for lab metrics: a univariate Shewhart-style individuals chart (moving-range dispersion) and a multivariate Hotelling T² object with a Phase II upper control limit.


Install

SPC uses NumPy and SciPy (not bundled in the base **fiwicontrol** install):

cd ~/Code/FiWiControl
python3 -m pip install -e ".[spc]"

**import fiwicontrol.spc** does not load NumPy / SciPy until you access **ShewhartControlChart** (NumPy only) or **HotellingT2** (both).


Classes

ShewhartControlChart

  • **ShewhartControlChart(k=3.0)** — chart width in multiples of estimated sigma.
  • **fit_individuals(x, moving_range_span=2)** — Phase I fit from a 1-D **numpy** array; only **moving_range_span=2** is supported (average moving range of consecutive pairs, **d₂ = 1.128**).
  • **limits()****(LCL, center, UCL)** with width **k** sigma (default **k=3.0**).
  • **is_out_of_control(value)** — boolean vs those limits.

HotellingT2

  • **fit(X)****X** shape **(m, p)** with **m > p + 1**; unbiased sample covariance, inverse for T².
  • **mean_**, **covariance_** — fitted Phase I mean vector and covariance (after **fit**).
  • **t2(x)** — Hotelling statistic for one observation **x** of length **p** vs the fitted mean.
  • **ucl(alpha=0.05)** — Phase II UCL using the **F_{p, m-p}** distribution (SciPy).
  • **is_out_of_control(x, *, alpha=0.05)** — **True** if **t2(x) > ucl(alpha=alpha)** (**alpha** is keyword-only).

Tests

With **[spc]** installed:

python3 -m pytest tests/test_spc.py -q

See also

  • **README.md** (full **fiwicontrol** package list and **src/** layout)
  • **docs/install.md** (optional **[spc]** alongside **[flows]**, **[power]**, …)