This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
In semiconductor manufacturing, defects such as dust particles, contamination, or misalignment can affect chip yield. A C-Chart is used here to monitor the number of defects per wafer.
Retrospective Analysis (100 wafers)
library(qcc)
## Warning: package 'qcc' was built under R version 4.4.3
## Package 'qcc' version 2.7
## Type 'citation("qcc")' for citing this R package in publications.
retro <- read.csv("C:/Users/rijul/Downloads/wafer_defect_retrospective.csv", header = FALSE)
colnames(retro) <- "Defect_Count"
qcc1 <- qcc(data = retro$Defect_Count, type = "c", title = "C-Chart for Retrospective Data")
LCL <- qcc1$limits[1]
UCL <- qcc1$limits[2]
retro2 <- subset(retro, Defect_Count >= LCL & Defect_Count <= UCL)
set.seed(123)
online <- data.frame(Defect_Count = rpois(30, mean(retro2$Defect_Count)))
qcc(data = retro2$Defect_Count, type = "c", newdata = online$Defect_Count, title = "C-Chart with Online Data")
## List of 15
## $ call : language qcc(data = retro2$Defect_Count, type = "c", newdata = online$Defect_Count, title = "C-Chart with Online Data")
## $ type : chr "c"
## $ data.name : chr "retro2$Defect_Count"
## $ data : int [1:100, 1] 3 1 7 3 4 2 1 4 4 1 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics : Named int [1:100] 3 1 7 3 4 2 1 4 4 1 ...
## ..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
## $ sizes : int [1:100] 1 1 1 1 1 1 1 1 1 1 ...
## $ center : num 3
## $ std.dev : num 1.73
## $ newstats : Named int [1:30] 2 4 2 5 6 0 3 5 3 3 ...
## ..- attr(*, "names")= chr [1:30] "101" "102" "103" "104" ...
## $ newdata : int [1:30, 1] 2 4 2 5 6 0 3 5 3 3 ...
## $ newsizes : int [1:30] 1 1 1 1 1 1 1 1 1 1 ...
## $ newdata.name: chr "online$Defect_Count"
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 8.2
## ..- attr(*, "dimnames")=List of 2
## $ violations :List of 2
## - attr(*, "class")= chr "qcc"
Manufacturers test batches of microchips using optical, X-ray, and
electrical inspection systems.
An np-Chart monitors the number of defective chips per
subgroup of 50.
retro <- read.csv("C:/Users/rijul/Downloads/retrospective_semiconductor_np_chart (1).csv", header = FALSE)
online <- read.csv("C:/Users/rijul/Downloads/online_monitoring_semiconductor_np_chart (1).csv", header = FALSE)
colnames(retro) <- "Defectives"
colnames(online) <- "Defectives"
sizes_retro <- rep(50, nrow(retro))
sizes_online <- rep(50, nrow(online))
qcc1 <- qcc(data = retro$Defectives, sizes = sizes_retro, type = "np", title = "np-Chart for Retrospective Data")
LCL <- qcc1$limits[1]
UCL <- qcc1$limits[2]
retro2 <- subset(retro, Defectives >= LCL & Defectives <= UCL)
qcc(data = retro2$Defectives, sizes = rep(50, nrow(retro2)), type = "np",
newdata = online$Defectives, newsizes = rep(50, nrow(online)),
title = "np-Chart with Online Monitoring Data")
## List of 15
## $ call : language qcc(data = retro2$Defectives, type = "np", sizes = rep(50, nrow(retro2)), newdata = online$Defectives, newsi| __truncated__
## $ type : chr "np"
## $ data.name : chr "retro2$Defectives"
## $ data : int [1:99, 1] 5 4 4 4 2 5 2 5 3 5 ...
## ..- attr(*, "dimnames")=List of 2
## $ statistics : Named int [1:99] 5 4 4 4 2 5 2 5 3 5 ...
## ..- 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 3.98
## $ std.dev : num 1.91
## $ newstats : Named int [1:50] 7 8 1 8 2 10 6 8 1 4 ...
## ..- attr(*, "names")= chr [1:50] "100" "101" "102" "103" ...
## $ newdata : int [1:50, 1] 7 8 1 8 2 10 6 8 1 4 ...
## $ newsizes : num [1:50] 50 50 50 50 50 50 50 50 50 50 ...
## $ newdata.name: chr "online$Defectives"
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 0 9.72
## ..- attr(*, "dimnames")=List of 2
## $ violations :List of 2
## - attr(*, "class")= chr "qcc"
The np-chart helps ensure that the proportion of
defective microchips remains stable over time.
Points outside control limits signal possible issues in the
manufacturing process that require investigation.
The C-chart monitors the number of defects per wafer.
The np-chart monitors the number of defective microchips per subgroup.
Both charts help detect process variation and maintain product quality in semiconductor manufacturing.