void QCWestgardRules(TVec Data, TVec OutControl, Double dataMean, Double dataSigma)
Compares values agains Westgard rules.
| # | Name | Description |
|---|---|---|
| 1 | Data | Data to-be-checked with Westgard rules. |
| 2 | OutControl | Vector storing each point status. If point(i) is out-of-control, then OutControl.Values[i] will be greater than zero (see explanation above). |
| 3 | dataMean | In most cases equal to data mean, but you can specify any value. |
| 4 | dataSigma | In most cases equal to data standard deviation, but you can specify any value. |
Result: stored in self (calling object)
Remarks:
Data individual values are tested to determine if they are in, or out, of control using a set of five rules called the Westgard rules. These rules indicate which points are out-of-control. The Westgard rules are (see www.westgard.com/mltirule.htm for details):
- Description | Rule
- 1S3 — One value beyond three sigma from the mean.
- 1S2 — One value beyond two sigma from the mean.
- 2S2 — Two consecutive values either greater than, or less than, two sigma from the mean.
- RS4 — A difference between consecutive values greater than four sigma.
- 41S — Four consecutive values greater than, or less than, one sigma from the mean.
- 10X — Ten consecutive values all greater than, or less than, the mean.
For each point several rules can be violated at the same time. Each Westgard rule violation has different value:
- Rule violated | Value
- 1S3 — 1=2^0
- 1S2 — 2=2^1
- 2S2 * — 4=2^2
- RS4 — 8=2^3
- 4S1 — 16=2^4
- 10X * — 32=2^5
For example, if rules 2S2 and 10X were violated, then the sum of violations for point would be 4 + 32 = 36 = 100100.
Examples
using Dew.Math;
using Dew.Math.Units;
using Dew.Stats.Units;
namespace Dew.Examples
{
private void Example(Dew.Stats.QCSeries QCSeries1)
{
Vector data = new Vector(0);
Vector outofcontrol = new Vector(0);
VectorInt indexes = new VectorInt(0);
data.LoadFromFile("process_data.vec");
StatControlCharts.QCWestgardRules(data,outofcontrol,data.Mean(),data.StdDev());
// Now find indexes of out-of-control points
indexes.FindIndexes(outofcontrol,">",0);
// indexes.IValues now stores the indices of out-of-control points
}
}