Control charts might be used to determine whether some kind of process is in control or not. Main types of Control charts available in MCharts are:
Setting ControlChart:
1 | // Sets ControlChart object named chart, where // dataModel is instance of ChartDataModel // ControlChartType.P - sets chart's type ControlChart chart = new ControlChart(dataModel, ControlChartType.P); |
NP-chart is a control chart used to show a number of defective (nonconforming) units in a sample or in a subgroup. Data in samples or subgroups should be of equal size. This chart inspects system stability: defective units in data samples or subgroups are found. For instance, everyday a fixed number of surveys are committed (for example, 100 every day) and a number of incomplete surveys would be plotted on np-chart. It would indicate this process' stability, as well as to display if there is a need of some kind of improvement.
Center line:
(
)
where:
For instance, factory produces 100000 radios per day, and checks 1000 radios per day. Below there is a table of defective radios found every day:
| Date | Defective radios |
|---|---|
| 2009-5-1 | 61 |
| 2009-5-2 | 69 |
| 2009-5-3 | 50 |
| 2009-5-4 | 63 |
| 2009-5-5 | 59 |
| 2009-5-6 | 50 |
| 2009-5-7 | 60 |
| 2009-5-8 | 69 |
| 2009-5-9 | 65 |
| 2009-5-10 | 70 |
| 2009-5-11 | 71 |
| 2009-5-12 | 65 |
| 2009-5-13 | 64 |
| 2009-5-14 | 69 |
| 2009-5-15 | 53 |
| 2009-5-16 | 73 |
| 2009-5-17 | 60 |
| 2009-5-18 | 55 |
| 2009-5-19 | 45 |
| 2009-5-20 | 50 |
We want to draw an np-chart for this data.
Creating chart's data model:
1 | /* * Creating data model */ ChartDataModel dataModel = new ChartDataModel(); // adding data - first parameter indicates KEY, second - VALUE dataModel.addKeyValues(("2009-5-1"), new Object[] { 61 }); dataModel.addKeyValues(("2009-5-2"), new Object[] { 69 }); dataModel.addKeyValues(("2009-5-3"), new Object[] { 50 }); //....... |
Creating chart:
1 | /* Creates ControlChart object named chart, where * dataModel contains data which we want to plot * ControlChartType.NP is an enumeration used to determine chart's type * 1000 - indicates size of sample */ ControlChart chart = new ControlChart(dataModel, ControlChartType.NP, 1000); |
Figure 4.3.1.1.1 nP-Chart Demonstration
A p-chart is one of control charts used to observe the change of the process over time. It is used for data in subgroups of varying size and shows a proportion of nonconforming items (and not the actual count of them). The subgroups can be formed based on time period or other grouping criteria. P-charts help to determine whether the process is stable and predictable. Also it enables to monitor the effect of process improvements. For example, a quality insurance office counts a proportion of unresolved client reported bugs per development iteration. The subgroups varies on a total amount of client reports per iteration.
The percent of items in the sample meeting the criteria of interest:
Center line:
where:
For instance, factory produces 1000000 clay bricks per day, and checks a varied number of bricks per day. Below there is a table of sizes of samples, defective bricks found every day:
| Date | Sample size | Defected bricks |
|---|---|---|
| 2009-5-15 | 150 | 2 |
| 2009-5-16 | 120 | 3 |
| 2009-5-17 | 130 | 5 |
| 2009-5-18 | 140 | 2 |
| 2009-5-19 | 150 | 7 |
| 2009-5-20 | 120 | 2 |
| 2009-5-21 | 201 | 5 |
| 2009-5-22 | 150 | 3 |
| 2009-5-23 | 140 | 12 |
| 2009-5-24 | 150 | 8 |
| 2009-5-25 | 120 | 6 |
| 2009-5-26 | 170 | 5 |
| 2009-5-27 | 186 | 10 |
| 2009-5-28 | 95 | 5 |
| 2009-5-29 | 101 | 8 |
| 2009-5-30 | 105 | 11 |
| 2009-5-31 | 110 | 8 |
We want to draw a p-chart for this data.
Creating chart's data model:
1 | // Creating data model ChartDataModel dataModel = new ChartDataModel(); // adding data - first parameter indicates KEY, second - VALUE // (first number is sample size and second - number of defected items) dataModel.addKeyValues(("2009-5-15"), new Object[] { 150, 2 }); dataModel.addKeyValues(("2009-5-16"), new Object[] { 120, 3 }); dataModel.addKeyValues(("2009-5-17"), new Object[] { 130, 5 }); //....... |
Creating chart:
1 | // Creates ControlChart object named chart, where // dataModel contains data which we want to plot // ControlChartType.P is an enumeration used to determine chart's type ControlChart chart = new ControlChart(dataModel, ControlChartType.P); |
Figure 4.3.1.2.1 P-Chart Demonstration
A c-chart is one of control charts used to observe how the process, measured by the number of defects or other type of incidents per item or per group of items, changes over time. These defects or incidents can be described as existence of some undesirable characteristic or as lack or some desirable characteristic. C-charts help to determine whether the process is stable and predictable. Also it enables to monitor the effect of process improvements. The c-chart is particularly useful for complex items when the whole item can not be described as defected or not. In order to use this chart, the possible defects or incidents have to be identified prior to data collection.
Center line:
⌊
⌋
where:
For instance, factory produces can openers. Below there is a table of sizes of samples, defective can openers found every day:
| Date | Defective openers |
|---|---|
| 2009-5-1 | 27 |
| 2009-6-2 | 26 |
| 2009-6-3 | 32 |
| 2009-6-4 | 27 |
| 2009-6-5 | 23 |
| 2009-6-6 | 23 |
| 2009-6-7 | 31 |
| 2009-6-8 | 26 |
| 2009-6-9 | 22 |
| 2009-6-10 | 29 |
| 2009-6-11 | 31 |
| 2009-6-12 | 28 |
| 2009-6-13 | 22 |
| 2009-6-14 | 26 |
| 2009-6-15 | 31 |
| 2009-6-16 | 29 |
| 2009-6-17 | 23 |
| 2009-6-18 | 25 |
| 2009-6-19 | 33 |
| 2009-6-20 | 27 |
We want to draw a c-chart for this data.
Creating chart's data model:
1 | /* * Creating data model */ ChartDataModel dataModel = new ChartDataModel(); // adding data - first parameter indicates KEY, second - VALUE (number of defected items) dataModel.addKeyValues(("2009-6-1"), new Object[] { 27 }); dataModel.addKeyValues(("2009-6-2"), new Object[] { 26 }); dataModel.addKeyValues(("2009-6-3"), new Object[] { 32 }); dataModel.addKeyValues(("2009-6-4"), new Object[] { 27 }); //....... |
Creating chart:
1 | /* Creates ControlChart object named chart, where * dataModel contains data which we want to plot * ControlChartType.C is an enumeration used to determine chart's type */ ControlChart chart = new ControlChart(dataModel, ControlChartType.C); |
Figure 4.3.1.3.1 C-Chart Demonstration
A u-chart is one of control charts used to observe how the process, measured by the number of defects or other type of incidents per subgroup, changes over time. The subgroups are of varying size. These defects or incidents can be described as existence of some undesirable characteristic or as lack or some desirable characteristic. U-charts help to determine whether the process is stable and predictable. Also, it enables to monitor the effect of process improvements. The U-chart is particularly useful for complex items when the whole item can not be described as defected or not. In order to use this chart, the possible defects or incidents have to be identified prior to data collection.
The average count of occurrence of a criteria of interest in sample of items:
Center line:
where:
For instance, factory produces 100000 mixers per day, and checks a varied number of mixers per day. Below there is a table of sizes of samples, defective mixers found every day:
| Date | Sample size | Defected mixers |
|---|---|---|
| 2009-6-1 | 500 | 27 |
| 2009-6-2 | 680 | 26 |
| 2009-5-17 | 130 | 32 |
| 2009-5-18 | 140 | 27 |
| 2009-5-19 | 150 | 27 |
| 2009-5-20 | 120 | 23 |
| 2009-5-21 | 201 | 23 |
| 2009-5-22 | 150 | 31 |
| 2009-5-23 | 140 | 26 |
| 2009-5-24 | 150 | 22 |
| 2009-5-25 | 120 | 29 |
| 2009-5-26 | 170 | 31 |
| 2009-5-27 | 186 | 28 |
| 2009-5-28 | 95 | 5 |
| 2009-5-29 | 101 | 8 |
| 2009-5-30 | 105 | 11 |
| 2009-5-31 | 110 | 8 |
We want to draw a u-chart for this data.
Creating chart's data model:
1 | // Creating data model ChartDataModel dataModel = new ChartDataModel(); // adding data - first parameter indicates KEY, second - VALUE // (first number is sample size and second - number of defected items) dataModel.addKeyValues(("2009-6-1"), new Object[] {500, 27 }); dataModel.addKeyValues(("2009-6-2"), new Object[] {680, 26 }); dataModel.addKeyValues(("2009-6-3"), new Object[] {536, 32 }); //....... |
Creating chart:
1 | // Creates ControlChart object named chart, where // dataModel contains data which we want to plot // ControlChartType.U is an enumeration used to determine chart's type ControlChart chart = new ControlChart(dataModel, ControlChartType.U); |
Figure 4.3.1.4.1 U-Chart Demonstration
An X-bar and s (sigma) chart is a pair of control charts for variables data. The chart should be used with subgroup size of 11 or more – the chart shows the stability and predictability of the system. Also it enables to monitor the effect of process improvements. Standard deviation is used for the chart. This gives a more effective measure of process spread, as each individual reading of the parameter is used for variability calculation. The chart, actually, consists of two separate charts: X-bar (process location over time, based on average of series of observations) and Sigma chart (variation between observations of series over time).
X-bar chart: UCL and LCL (Upper and Lower Control Limits)
where:
Average (X-bar):
where:
Average of subgroups (X-doublebar):
where:
When the subgroup size is
this equation simplifies to
Process Sigma based on Sigma chart
where:
Average Sigma
where:
Sigma chart calculations:
The subgroup standard deviation:
where:
UCL and LCL (Upper and Lower Control Limits):
where:
For instance, factory produces 100000 camshafts per day, and checks diameter of a fixed number of camshafts every day. Below there is a table of sample number and measurements:
| Sample | Part 1 | Part 2 |
|---|---|---|
| 1 | 0.180 | 0.189 |
| 2 | 0.185 | 0.188 |
| 3 | 0.180 | 0.182 |
| 4 | 0.182 | 0.181 |
| 5 | 0.188 | 0.183 |
| 6 | 0.181 | 0.184 |
| 7 | 0.182 | 0.185 |
| 8 | 0.186 | 0.188 |
| 9 | 0.181 | 0.185 |
| 10 | 0.185 | 0.182 |
| 11 | 0.179 | 0.186 |
| 12 | 0.181 | 0.181 |
| 13 | 0.182 | 0.182 |
| 14 | 0.181 | 0.188 |
| 15 | 0.180 | 0.183 |
| 16 | 0.183 | 0.182 |
| 17 | 0.181 | 0.182 |
| 18 | 0.182 | 0.188 |
| 19 | 0.181 | 0.186 |
| 20 | 0.180 | 0.184 |
| 21 | 0.183 | 0.182 |
| 22 | 0.181 | 0.187 |
| 23 | 0.182 | 0.183 |
| 24 | 0.181 | 0.187 |
| 25 | 0.183 | 0.186 |
| 26 | 0.181 | 0.189 |
| 27 | 0.182 | 0.184 |
We want to draw a XBar&S for this data.
Creating chart's data model:
1 | /* * Creating data model */ ChartDataModel dataModel = new ChartDataModel(); dataModel.addKeyValues(("1"), new Object[] { 0.180,0.189}); dataModel.addKeyValues(("2"), new Object[] { 0.185,0.188 }); dataModel.addKeyValues(("3"), new Object[] { 0.180,0.182 }); dataModel.addKeyValues(("4"), new Object[] { 0.182,0.181 }); //....... |
Creating chart:
1 | /* Creates ControlChart object named chart, where * dataModel contains data which we want to plot * ControlChartType.Sigma is an enumeration used to determine chart's type */ ControlChart chart = new ControlChart(dataModel, ControlChartType.Sigma); /* Creates ControlChart object named chart2, where * dataModel contains data which we want to plot * ControlChartType.X is an enumeration used to determine chart's type */ ControlChart chart2 = new ControlChart(dataModel, ControlChartType.X); |
Figure 4.3.1.5.1 XBar Sigma Demonstration
An X-bar and R (range) chart is a pair of control charts for variables data. The chart should be used with a subgroups size of two or more – the chart shows the stability and predictability of the system. Also it enables to monitor the effect of process improvements. The chart, actually, consists of two separate charts: X-bar (process location over time, based on average of series of observations) and Range chart (the change of range of subgroups over time).
X-bar chart: UCL and LCL (Upper and Lower Control Limits)
where:
Average (X-bar):
where:
Average of subgroups (X-doublebar):
where:
When the subgroup size is
this equation simplifies to
Process Sigma based on Range chart
where:
Average Range
where:
Range chart calculations:
Plotted statistic:
, where
are the
observations in subgroup
UCL and LCL (Upper and Lower Control Limits):
where:
For instance, factory produces 100000 camshafts per day, and checks diameter of a fixed number of camshafts every day. Below there is a table of sample number and measurements:
| Sample | Part 1 | Part 2 |
|---|---|---|
| 1 | 0.180 | 0.189 |
| 2 | 0.185 | 0.188 |
| 3 | 0.180 | 0.182 |
| 4 | 0.182 | 0.181 |
| 5 | 0.188 | 0.183 |
| 6 | 0.181 | 0.184 |
| 7 | 0.182 | 0.185 |
| 8 | 0.186 | 0.188 |
| 9 | 0.181 | 0.185 |
| 10 | 0.185 | 0.182 |
| 11 | 0.179 | 0.186 |
| 12 | 0.181 | 0.181 |
| 13 | 0.182 | 0.182 |
| 14 | 0.181 | 0.188 |
| 15 | 0.180 | 0.183 |
| 16 | 0.183 | 0.182 |
| 17 | 0.181 | 0.182 |
| 18 | 0.182 | 0.188 |
| 19 | 0.181 | 0.186 |
| 20 | 0.180 | 0.184 |
| 21 | 0.183 | 0.182 |
| 22 | 0.181 | 0.187 |
| 23 | 0.182 | 0.183 |
| 24 | 0.181 | 0.187 |
| 25 | 0.183 | 0.186 |
| 26 | 0.181 | 0.189 |
| 27 | 0.182 | 0.184 |
We want to draw a XBar&R for this data.
Creating chart's data model:
1 | /* * Creating data model */ ChartDataModel dataModel = new ChartDataModel(); dataModel.addKeyValues(("1"), new Object[] { 0.180,0.189}); dataModel.addKeyValues(("2"), new Object[] { 0.185,0.188 }); dataModel.addKeyValues(("3"), new Object[] { 0.180,0.182 }); dataModel.addKeyValues(("4"), new Object[] { 0.182,0.181 }); //....... |
Creating chart:
1 | /* Creates ControlChart object named chart, where * dataModel contains data which we want to plot * ControlChartType.Range is an enumeration used to determine chart's type */ ControlChart chart = new ControlChart(dataModel, ControlChartType.Range); /* Creates ControlChart object named chart2, where * dataModel contains data which we want to plot * ControlChartType.X is an enumeration used to determine chart's type */ ControlChart chart2 = new ControlChart(dataModel, ControlChartType.X); |
Figure 4.3.1.6.1 XBar Range Demonstration
IMR (or Individuals and Moving Range) chart is a pair of control charts for processes with a subgroup size of one. IMR charts help to determine whether the process is stable and predictable and to observe how the system changes over time. The separate charts illustrates different information: individual (X) chart displays individual measurements and moving range (MR) shows variability between two sequential points. The charts also enable to monitor the effect of process improvements.
Individual(X) chart: UCL and LCL (Upper and Lower Control Limits)
where:
Average (X-bar):
where:
Average of subgroups (X-doublebar):
where:
When the subgroup size is
this equation simplifies to
Process Sigma based on Moving Range chart
where:
Moving Range chart calculations:
Plotted statistic:
The moving ranges between successive subgroups in an Individual-X Chart
Center line:
where:
UCL and LCL (Upper and Lower Control Limits):
where:
For instance, factory is producing very high quality single-pipe steam radiators. Radiator height was observed.
| Sample | Height in |
|---|---|
| 1 | 28.570 |
| 2 | 28.575 |
| 3 | 28.570 |
| 4 | 28.572 |
| 5 | 28.578 |
| 6 | 28.571 |
| 7 | 28.572 |
| 8 | 28.576 |
| 9 | 28.571 |
| 10 | 28.575 |
| 11 | 28.569 |
| 12 | 28.571 |
| 13 | 28.572 |
| 14 | 28.571 |
| 15 | 28.570 |
| 16 | 28.573 |
| 17 | 28.571 |
| 18 | 28.572 |
| 19 | 28.571 |
| 20 | 28.570 |
| 21 | 28.573 |
| 22 | 28.571 |
| 23 | 28.572 |
| 24 | 28.571 |
| 25 | 28.573 |
| 26 | 28.571 |
| 27 | 28.572 |
We want to draw a IMR chart for this data.
Creating chart's data model:
1 | /* * Creating data model */ ChartDataModel dataModel = new ChartDataModel(); dataModel.addKeyValues(("1"), new Object[] { 28.570 }); dataModel.addKeyValues(("2"), new Object[] { 28.575 }); dataModel.addKeyValues(("3"), new Object[] { 28.570 }); dataModel.addKeyValues(("4"), new Object[] { 28.572 }); dataModel.addKeyValues(("5"), new Object[] { 28.578 }); //....... |
Creating chart:
1 | /* Creates ControlChart object named chart, where * dataModel contains data which we want to plot * ControlChartType.MovingRange is an enumeration used to determine chart's type */ ControlChart chart = new ControlChart(dataModel, ControlChartType.MovingRange); /* Creates ControlChart object named chart2, where * dataModel contains data which we want to plot * ControlChartType.Individuals is an enumeration used to determine chart's type */ ControlChart chart2 = new ControlChart(dataModel, ControlChartType.Individuals); |
Figure 4.3.1.7.1 IMR Chart Demonstration