As manufacturing processes grow more complex, so does the challenge of effectively monitoring the countless input and output parameters that drive quality and yield. Traditional control charts often fall short when faced with high-dimensional data or small batch sizes run across shared equipment.
This session explores an innovative solution: a short run model driven multivariate control chart that combines the strengths of both approaches into a flexible, scalable monitoring tool. While not yet a built-in feature in JMP, this method can be easily created with minimal scripting and takes full advantage of JMP’s interactive visualization and dynamic linking capabilities.
Join us to see how this approach empowers engineers and analysts to quickly detect issues, streamline decision making, and improve process control in fast-paced, high-mix manufacturing environments.

Morning, everyone. Thank you for joining. I'm Chris Dennis with the SUMCO Applications Engineering team. For those who don't know, SUMCO is a silicon wafer manufacturing company. We make the silicon wafers that are used as starting material in the semiconductor process. Today, I'm going to talk about practical remix for control charts to handle short runs and big data, and find some shifts using different techniques. I'm going to share the concept briefly, and then go to a live demo and walk through how to make the charts, and how to set up scripts to customize the chart into something useful for process engineers.
Today's manufacturing process are really complicated. Things move really fast. There are lots of changes happening in the factory every day. It's not uncommon to have hundreds of products running and across tens of tools. Traditional SPC approach generates one chart for each parameter tool and part combination. These can quickly multiply into thousands of charts. High change frequency complicates the charts even further, because there may be few data points added to a chart during the product run.
This is an example of a compilation of control charts from one of our factories processes. You can see we have lots of part changes happening and only a few runs in each chart. The assumptions of an ideal state control chart fail really quickly, because we don't have long, consistent runs, and the processes are shifting conditions all the time. With these, the assumptions break down for control charting, and they can become ineffective in the charts. When we look at our process, we have more than a single parameter that adds complexity. The inputs influence the outputs and correlate to each other. If you chart them all separately, you can lose the big picture. The system might drift in a subtle, hidden way, and classic SPC won't catch it.
What if we could change this up? Instead of charting raw data, we chart what we don't expect. Build a model that sets a prediction for each data point, and then we chart the residuals, the difference between the predicted reality, the prediction and reality. That's where the surprises live.
Here's a quick side-by-side looking at the benefits of traditional SPC, or model control charts versus traditional SPC charts. Traditional charts are great for stable processes, simple processes, one product at a time. Model-driven charting is multivariate. It handles correlations. It removes normal variation and flags in the unexpected. Perfect. Perfect for messy data like the data we have in our process.
We can pick different models to use. For example, a PCA model. Principal Components Analysis works well when you just want to compare natural structures like sensors or spectral data. Partial Least Squares model is great when you have response to predict a quality attribute, and regression models work well for simple known relationships. The trick is to pick what model fits the data that you're putting in, and to verify your model. Let's talk about what we're going to build and how what we do in JMP.
The first step is, I recommend to standardize the values that you plot, especially in the case of short run control chart when the sigmas vary, things don't line up, right? It's a good idea to normalize that data. It also helps with the multivariate chart, in my experience, to not have one parameter dominate a signal and overwhelm other parameters. It puts everything on equal footing. Next would be to fit the model. In this case I'm going to talk about one that and show one that can be done in standard JMP, you don't need JMP Pro, which is the PCA model. This is used in the model-driven multivariate control chart platform. We can run that model, and in that model, it plots out the residuals the T² statistics for each data point, so we want to grab those residuals and save them. We can take those, and we can build a short run control chart to look at how that changes and find those unexpected events. Of course, the last step we set limits and alarms on our chart.
Let's talk about some of the things and why this chart might be really useful, or I think it's really useful. First, every one of these vertical dotted lines, that represents a product change. All the products are on one chart, and I can see what's going on, see where there may be some high variation, or in some out of control events. What's nice about the model-driven multivariate control chart is I can drill down on these points, and I can take this, and I can look to see from a univariate method which parameters are out. I could look for things that are in common. And then, I can go further down into the univariate chart. I think this is the power of monitoring the residuals is that I have 20 parameters stacked into this one chart for the example I'm going to show across, I think ten different products, and I'm going to take it down, and I can get all the way down to that individual chart that I would have done multiplying 20 times 10 times... Each tool, I get, more simplified view of the chart.
All right. Why use this approach? It seems to work well for high-mix product lines with short run data. Model-driven, and so it's less noisy. It helps you to see what matters. It scales very easily with scripting. You can take this from one type of tool set and easily copy the methodology over to a different type of tool set or a different scenario. And then, for the process engineer, the user who's got to go and look at this. The visual tools at JMP, the dynamic data linking. The ability to drill down through charts makes it really fast and transparent to go through and troubleshoot a problem and work on getting to the meat of the data quickly.
Now, I want to walk through a live example and jump. In this example, I'm going to basically script to build the chart and then go through the scripting steps and then do some modification of scripting steps to enhance the look and the feel of the chart, to make it something that is more useful for process engineer, something that will help them do their job faster and easier.
All right. Let's go over to JMP and go to the live demo.
For this presentation and on the website, I've included a journal. It has example of the data. It has example of the scripts and the steps developing the scripts. Let's start off with the data table. I've got a data table. This data is all normalized data and cleaned up, so you can use it. There are 19 or 20 different process parameters that are inputs to a tool. There's a part. This data has already been prepared, so I'm not going to talk about the preparation step. That's a whole different data wrangling and setup step. What we'll talk about is how we're going to do this analysis. If we start and do this analysis manually, this is the basic flow. I'm going to start right here at the model-driven multivariate control chart step, capture the residuals, and then build a short run control chart from there.
I want to script this. One of the tricks that I've been using to help me with my scripting and make scripting easier, I'm not an expert scripter, is I like to use the Workflow Builder. I'm going to turn that on and bring that window over here. I'm going to just set it to record right now and minimize that because I don't need to look at that right now.
Let's talk about making a basic script. First thing I'm going to do is I'm just going to copy an outline for these three steps that we can do it. I'm going to open a new script window. I set outline in. The first thing we want to do is do the model, then the residuals, then short run control chart. We'll do that. Let's go back to our sample data analysis quality process model-driven multivariate control chart. Platform's pretty easy to use. We're just going to grab all the inputs and put that into our process parameters. The part, put that into a By parameter and hit OK.
We've got a chart here. We've got the chart generated. This is the chart we talked about. It's got links down to look at each of the different parameters. Let's go next and let's go... Next step in this is to capture the residuals. To capture the residuals, I'm just going to go to each chart and save the column save values. This is a little tedious watching me point and click to go through these 9 or 10 parts, so I apologize for that. I would sing and dance, but I don't sing, and I only dance with my wife because I'm not very good at it. We'll go through and grab these a couple more left. What that did is, it created a new column in the data table for the T² by part, and it filled in that residual value for each line in the data table. Now we have a residual for each point that we can plot.
The next step we can go back to the quality process menu. We can hit open Control Chart Builder. We're going to change because we have multiple products. We will put them on the same chart. We're going to put them into a short run control chart. We'll start that by part. Grab that and take it over. And then, instead of plotting inputs on these individual points, we're going to plot the residuals. Drag that into the y-axis. Now, we have a short run control chart with... See the different part changes. There's in control. There's out of control. We have them for all of these different parts. That's pretty much what we set out to do from the beginning. I'm just going to close this down, and then let's go back now. Let's go back and grab our Workflow Builder, and stop recording. In the Workflow Builder, we've captured all the steps to do this chart.
What I want to do now is I want to take these steps, and I want to build them into my script. I've got the model residuals short run step. Each one of those are different steps inside the Workflow Builder from the steps we did. I can simply just grab those, copy the script from here, and add it here. Let's take a quick look at what we've got. We've got the model-driven multi-parameter control chart. We have a whole bunch of part-specific information. Because I want to make this a general script, I'm going to remove that information. That's going to set me up to transfer it to a different group of parts. Make it less specific, make it more transferable later on. Now, I have this call line.
The next step, let's go through that, also calls out this model-driven multivariate control chart, but at the end here we see that we've saved that as an object, and we've saved the values from the T² plot.
This is what I want to do to capture those residuals. I am going to cheat a little bit because I will probably make a mistake typing this stuff out, but I'm going to grab a line here which basically sets up a loop to go get these residuals, so it's the same T², save values command. The only thing different is, I noted that it had an object here that I'm looping through and adjusting. I'm going to go put that an object name up here when I make those multivariate charts.
The last step is to go back here now and make the short run control chart. I'm just going to copy that out, and I'm going to take it back over here. I'm going to add into short run control chart section. I'm going to do a little bit of clean-up here. Make sure that I end these command statements and have a semicolon.
I'm not continuing this line here, so I'll get rid of this comma. That's my basic script. I've captured everything from the Workflow Builder and put it into the script. Now, I'm ready to go. I can run that script. Now, I have the multivariate chart as well as the short run control chart here. That's really what I wanted to do. If I look at this, if I'm the user and go, "Look, one thing I noticed that I don't like right away is that I have to jump between charts to get things, and I really like this one where I can drill down and go look and see different things that are going on." I want to take that functionality and add it directly into this chart. That's pretty easy to do with JMP. We can just go over here and save the script for this chart to a clipboard. And then, we can take that, and we can paste it in as a hover level and paste Graphlet.
Now, we have that. That's pretty easy. I want to add that to my script, but I forgot to turn Workflow Builder on. I felt really bad the first time I did this and was working through it and said, "Oh." Workflow Builder didn't capture it when I did it anyway, but there's a simple solution. We can go to the script for this chart. We can save script, and let's just save it to a scripting window. We can bring that over. I can look, and we'll see what's different between that and my script. It's down here in the short run control chart. What's different or where it gets different is, after the show control panel, I have all this information to send it to the report and to create the Graphlet to set the Graphlet up. I'm going to grab all of that and take it back here, paste it in.
Again, I picked up all of this part information. I'm just going to delete those lines like I did before. Make sure I get the spacing right. Now, I should have a script that will make that chart with a Graphlet. Let's go back here. Let's close this because I don't want to do that again. Let's close this down I don't need to see that. Let's look at our script. Let's run the script and see if we got what we wanted to get. Let's look right here. Boom. I've got that. Great. Now, it's a Graphlet I put it and... I, of course, got the same thing back. Look at this, this is okay, but personally I would like maybe just to get the graph for the part that I'm looking at when I click and not have to scroll through all these and have them all in one spot.
The way I'm going to do that, and again, I apologize for not walking through it, but in the interest of time, I'm going to add a click filter in. To add this click filter in. Basically I'm going to go in here which is the picture statement inside the Graphlet. I'm going to add a different command in, and I'm going to define the part based off the click. And then, I'm going to build the chart again, and I'm going to add a local data filter, so I only show that the chart for that one item. With that, this should hopefully get us to where now, I have a script I can go through, I can select a point here. At this point, I can click on this, and I generate that control chart just from a click. Let's look at that compared to what we had originally. This is part 22. Let's see. This chart and this chart don't look the same. And so there may be something going on here.
Here I show two pretty strong out of control charts over. Over here, I just have one. The big difference if you look is the number of principal components on this chart is five principal components. Here is eight. When I added that filter, I lost the piece inside that multivariate chart that was putting down and paring down that principal components for each part to a different level. If you go through any of these, you'll find they're all now at eight, which none of them were at eight previously. We can fix that. Again, in the interest of time, I'm just going to add the scripting in here, but this is a brute force approach and I'm sure there's a better approach out there, but what I'm going to do in the original script, I'm going to go after I've saved the residuals to table, and I'm going to go and manually get those residuals. How I'm doing that really is I'm going to run just an independent principal components value.
I'm going to grab that component's value based off the eigenvalue that comes out, and the way the routine works is it basically is using the number of principal components greater than or equal to 85%. I'm going to capture that data. I'm going to put it in a table. And then, I can use that table to filter off of. In my click filter, I need to add a couple of commands down here as well. What I'm going to do is, the first thing I'm going to do grab this and I'll explain. It is from that principal components table, I'm going to select the value where the part equals p. That's that's the value of interest. And then, the second thing I'm going to do when I make the multivariate control chart is, I'm going to add in, and I'm going to set the number of components. That's something that I deleted all the other times by part, because I wanted to make it easy to adjust the number of parts. With this, now the number of parts is more flexible, more adjustable.
I can transition now to anything with this. Let's see if I copied and pasted everything correctly. This is where I would expect things to fall apart, but let's see if it worked. You know what? I'm going to do this twice because I don't know. I showed a couple things flying up and popping on the screen. The first thing I want to show is, I want to show that I have this part and component table. Part 22 is the one we looked at before five components. I verified this a couple of times, and these are all right. That's great I have this table. It's that click filter is going to go in for each part. Grab this value to make sure I get the right chart. Here's my chart. Now I've got this short run control chart again. Every time the vertical dashed lines go I'm changing parts.
I can look and see I've got a bunch of OCs, and I've got some stuff that's not OC. Let's look at maybe what this chart is telling us. Let's just go in, and we're going to grab one, pop it on my other screen. I've got this chart and I can drill down into this chart. I can see there's a few different things where the univariant control chart would be out of control. That's indicated by the red. I can click in on one of these bars and I can drill down on that chart, and I can look at that individual chart and say, "Okay, well that's it. Whatever that means." I'm going to leave this one open, but I'm going to go in, and this one has three things. What's going on here? I'm going to click in and open this chart, and select these three out of control points that I saw here.
Now I can go in, and instead of point and clicking I can look at that contributions plot from the menu, but I can pull all of them up at once. I don't have to click individually on those charts. I really like this, especially when looking at multiple things, because it stacks up the chart for each sample on top of each other, right? I can quickly see what's going on if there's anything in common. This one has something over here. These don't, but right here in the middle, these four things are all different. That to me is interesting. That's something I should go explore. When I looked at this one, the same four inputs had the same signal here were different on this one. Maybe I have some systematic problem going on. Further, of course, I can go in, and I can drill down on this chart and look at some of these at individual, and this is interesting because all of these were different.
All of them had no OC, but they're OC in different directions. Two are high, one is low. That's interesting. That to me gives me a tool where one stop from this chart I can go in, and I can quickly drill down and look for commonalities and see where I might want to investigate something that's going on.
I like that, and I'll give a couple insights into this. Looking at this in these charts, we found different problems. We found problems with valves that were not turning on and off correctly. We found problems with process settings where maybe we're flowing more gas than we need. We're basically wasting money that we don't need, and we found problem, or I shouldn't say problems, but we found issues where we've taken the inputs to a point of instability, which could then have cause instability in the product that maybe we don't measure someplace else. We don't know.
It just lines up on this situation where you look at the inputs, and you can see how well your inputs are performing, and look for abnormalities in your inputs, and can help you save money and help you to avoid potential issues.
That's the demo. I have one more slide I want to share with you and talk about. For the references, I had several references. First, I saw at Discovery last year and also reviewed again from JMP online, Mike Anderson's presentation, for short run control charts. That was very helpful to me. Don Wheeler's Short Run SPC book. Also, if you're interested in it, it's very, very useful, very straightforward to follow. Lots of great stuff. Innovative control, charting, wise and fair. That is also a treasure trove of resources, and it dovetails into a lot of the stuff in the jump applications. I recommend that. Also, I found on the JMP community multivariate methods presentation. I found that also very useful, very helpful. And then, I'd like to give a special thanks to Jed Campbell from the Rocky Mountain JMP team for encouraging me to pursue this idea and helping me with some of the scripting challenges along the way. Thank you for your time and I hope you have a good rest of your day.
Presenter
Skill level
- Beginner
- Intermediate
- Advanced