Scenario: A company manufactures semiconductor wafers and wants to monitor the number of defects per wafer. The quality control team decides to implement a C-Chart to monitor the number of defects per wafer.
They must perform a retrospective analysis using 100 wafers sampled in the past, which they use to establish in-control limits on the number of defects per wafer. After this is established, they monitor the process using these limits and collect an additional 30 samples. Perform this analysis.
#QCC
library(qcc)
## Package 'qcc' version 2.7
## Type 'citation("qcc")' for citing this R package in publications.
# Question1
# Data
retro <- read.csv("/Users/raunak/Downloads/wafer_defect_retrospective.csv")
online <- read.csv("/Users/raunak/Downloads/wafer_defect_online.csv")
# Phase I - First trial
CChart1 <- qcc(data = retro[,1], sizes = 1, type = "c")
CChart1
## List of 11
## $ call : language qcc(data = retro[, 1], type = "c", sizes = 1)
## $ type : chr "c"
## $ data.name : chr "retro[, 1]"
## $ data : int [1:99, 1] 1 7 3 4 2 1 4 4 1 2 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics: Named int [1:99] 1 7 3 4 2 1 4 4 1 2 ...
## ..- attr(*, "names")= chr [1:99] "1" "2" "3" "4" ...
## $ sizes : num [1:99] 1 1 1 1 1 1 1 1 1 1 ...
## $ center : num 3
## $ std.dev : num 1.73
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 8.2
## ..- attr(*, "dimnames")=List of 2
## $ violations:List of 2
## - attr(*, "class")= chr "qcc"
# Keeping only points within limits
LCL1 <- CChart1$limits[1]
UCL1 <- CChart1$limits[2]
retro2 <- retro[ retro[,1] >= LCL1 & retro[,1] <= UCL1 , ]
retro2
## [1] 1 7 3 4 2 1 4 4 1 2 3 5 5 3 2 3 3 1 6 1 5 4 3 2 3 2 6 2 6 3 0 5 0 6 2 4 3 5
## [39] 8 4 1 3 0 0 2 4 1 5 3 0 4 1 6 3 1 1 0 3 2 4 5 1 0 5 5 1 0 2 2 2 6 6 5 5 0 2
## [77] 5 5 1 4 3 2 2 2 6 4 1 1 1 5 3 1 3 6 2 5 2 1 7
# Phase I - Second trial
CChart2 <- qcc(data = retro2, sizes = 1, type = "c")
In Phase I of Retrospective Analysis, The mean number of defects per wafer is 3, and Control limits are UCL = 8.20 and LCL = 0.00. So, all wafers were within these limits, showing no special cause variation. Which means overall the process remains in control during the retrospective period.
# Phase II - Adding online data c-chart
qcc(data = retro2, sizes = 1, type = "c",
newdata = online[,1], newsizes = 1)
## List of 15
## $ call : language qcc(data = retro2, type = "c", sizes = 1, newdata = online[, 1], newsizes = 1)
## $ type : chr "c"
## $ data.name : chr "retro2"
## $ data : int [1:99, 1] 1 7 3 4 2 1 4 4 1 2 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics : Named int [1:99] 1 7 3 4 2 1 4 4 1 2 ...
## ..- attr(*, "names")= chr [1:99] "1" "2" "3" "4" ...
## $ sizes : num [1:99] 1 1 1 1 1 1 1 1 1 1 ...
## $ center : num 3
## $ std.dev : num 1.73
## $ newstats : Named int [1:29] 1 3 3 2 3 2 3 0 2 4 ...
## ..- attr(*, "names")= chr [1:29] "100" "101" "102" "103" ...
## $ newdata : int [1:29, 1] 1 3 3 2 3 2 3 0 2 4 ...
## $ newsizes : num [1:29] 1 1 1 1 1 1 1 1 1 1 ...
## $ newdata.name: chr "online[, 1]"
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 8.2
## ..- attr(*, "dimnames")=List of 2
## $ violations :List of 2
## - attr(*, "class")= chr "qcc"
In Phase II of Online Monitoring, byusing the same
control limits from Phase I, the next 30 wafers were evaluated.None of
the new points exceeded the UCL or fell below the LCL.
So process remained stable, with no abnormal trends.
The C-Chart confirms that defect counts per wafer are consistent over
time.
This indicates that the process in both Phase I and Phase II is
statistically stable and the wafer inspection system is performing
consistently with no significant shift in the defect rate has occurred
since baseline.
For this problem, the manufacturer conducts a retrospective analysis of 100 subgroups of microchips, where each subgroup consists of 50 chips. The number of defective chips is recorded for each subgroup, and an np chart is constructed to monitor the stability of the process.Â
In addition to the retrospective analysis, the manufacturer also sets
up a system for online process monitoring. Here, 50 additional subgroups
are inspected in real-time, and the results are recorded for continuous
process control. The online np chart helps ensure that the production
process remains stable and that any deviations are immediately
addressed.
The np control chart is essential for both retrospective and online monitoring because it provides visual indicators of process stability and highlights any points where the process may need corrective action.
#QCC
library(qcc)
# Data
retro_np <- read.csv("/Users/raunak/Downloads/retrospective_semiconductor_np_chart.csv")
online_np <- read.csv("/Users/raunak/Downloads/online_monitoring_semiconductor_np_chart.csv")
# subgroup size = 50
n <- 50
# Phase I - First trial
NPChart1 <- qcc(data = retro_np[,1], sizes = n, type = "np")
NPChart1
## List of 11
## $ call : language qcc(data = retro_np[, 1], type = "np", sizes = n)
## $ type : chr "np"
## $ data.name : chr "retro_np[, 1]"
## $ data : int [1:99, 1] 4 4 4 2 5 2 5 3 5 7 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics: Named int [1:99] 4 4 4 2 5 2 5 3 5 7 ...
## ..- attr(*, "names")= chr [1:99] "1" "2" "3" "4" ...
## $ sizes : num [1:99] 50 50 50 50 50 50 50 50 50 50 ...
## $ center : num 4.08
## $ std.dev : num 1.94
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 9.89
## ..- attr(*, "dimnames")=List of 2
## $ violations:List of 2
## - attr(*, "class")= chr "qcc"
# Keeping points within trial limits
LCL1 <- NPChart1$limits[1]
UCL1 <- NPChart1$limits[2]
retro_np2 <- retro_np[ retro_np[,1] >= LCL1 & retro_np[,1] <= UCL1 , ]
retro_np2
## [1] 4 4 4 2 5 2 5 3 5 7 1 4 3 3 0 5 4 6 7 1 5 2 6 6 4 3 5 5 2 1 3 6 4 2 2 3 4 4
## [39] 4 9 1 2 2 4 6 3 7 4 6 8 5 7 7 7 2 3 2 3 2 7 2 3 2 4 6 1 1 3 3 4 5 2 8 3 1 2
## [77] 2 4 6 7 6 2 5 5 4 4 3 2 3 8 5 0 2 5 5 9 6 3
In Phase I, Most points fall within the control limits, indicating that the process is generally stable. However, one point exceeds the UCL, signaling a potential special cause. This subgroup should be investigated further for possible reasons, such as equipment malfunction, material variation, or operator error.
## Phase II - Second trial
NPChart2 <- qcc(data = retro_np2, sizes = n, type = "np")
## Phase II: Adding online data np-chart
qcc(data = retro_np2, sizes = n, type = "np",
newdata = online_np[,1], newsizes = n)
## List of 15
## $ call : language qcc(data = retro_np2, type = "np", sizes = n, newdata = online_np[, 1], newsizes = n)
## $ type : chr "np"
## $ data.name : chr "retro_np2"
## $ data : int [1:98, 1] 4 4 4 2 5 2 5 3 5 7 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics : Named int [1:98] 4 4 4 2 5 2 5 3 5 7 ...
## ..- attr(*, "names")= chr [1:98] "1" "2" "3" "4" ...
## $ sizes : num [1:98] 50 50 50 50 50 50 50 50 50 50 ...
## $ center : num 3.97
## $ std.dev : num 1.91
## $ newstats : Named int [1:49] 8 1 8 2 10 6 8 1 4 0 ...
## ..- attr(*, "names")= chr [1:49] "99" "100" "101" "102" ...
## $ newdata : int [1:49, 1] 8 1 8 2 10 6 8 1 4 0 ...
## $ newsizes : num [1:49] 50 50 50 50 50 50 50 50 50 50 ...
## $ newdata.name: chr "online_np[, 1]"
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 9.7
## ..- attr(*, "dimnames")=List of 2
## $ violations :List of 2
## - attr(*, "class")= chr "qcc"
In Phase II, The chart indicates one point beyond the UCL and two runs
rule violations, suggesting that special cause variation has occurred
during online monitoring. These results imply that while the process was
initially in control, certain disturbances may have affected the
stability in the new production phase.
The np-chart analysis shows that the microchip manufacturing process was generally stable, with only minor indications of special cause variation. During the retrospective phase, almost all subgroups were within control limits, confirming that most variation was due to common causes. In the online phase, a few subgroups exceeded the upper control limit, suggesting a possible process shift or disturbance, such as equipment calibration drift or material inconsistency. Overall, the process remains largely in control but requires investigation of the out-of-control points to maintain consistent product quality and long-term process stability.