cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Browse apps to extend the software in the new JMP Marketplace
Choose Language Hide Translation Bar
Rumo
Level I

Filtered Spec limit in a control chart for several features

Hello,
I hope you can help me. I'm still very new to JSL. I have the following problem:
I have a table like this:
Feature     data            USL
A           number1       Spec A
A           number2      Spec A
A           number3       Spec A
B          number4       Spec B
B          number5       Spec B
B          number6       Spec B

The feature should be selected with the data filter. Then the data should be displayed in an control chart, especially for a feature. At the same time, of course, the spec limit should also be displayed for each feature in the chart.
How do I get that into a script? I only manage to display the data with the spec limit for one feature in the chart. If I select the other feature in the filter, the first spec limit is retained.
The solution is probably trivial, but I can't figure it out.

Thank you for your help!

1 ACCEPTED SOLUTION

Accepted Solutions
Georg
Level VII

Re: Filtered Spec limit in a control chart for several features

Have a look at the following script,

it creates a table, and inside is a script that may perform what you want.

It splits the Features into columns and sets the USL.

 

I think the same as @jthi , having data with different ranges (or specs) in separate columns makes it easier.

 

New Table( "test-split",
	Add Rows( 9 ),
	New Script(
		"__split_usl",
		cdt = Current Data Table();
		Summarize( cdt, spec_lst = by( :Feature ), usl_lst = Mean( :USL ) );
		sdt = cdt << Data Table( "test-split" ) <<
		Split(
			Split By( :Feature ),
			Split( :data ),
			Remaining Columns( Drop All ),
			Sort by Column Property,
			Output table( "Split Table with USL" )
		);
		For( i = 1, i <= N Items( spec_lst ), i++,
			Eval(
				Eval Expr(
					Column( sdt, spec_lst[i] ) <<
					Set Property(
						"Spec Limits",
						{USL( Expr( usl_lst[i] ) ), Show Limits( 1 )}
					)
				)
			)
		);
	),
	New Column( "Feature",
		Character,
		"Nominal",
		Set Values( {"A", "A", "A", "B", "B", "B", "C", "C", "C"} )
	),
	New Column( "data",
		Numeric,
		"Continuous",
		Format( "Best", 12 ),
		Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9] )
	),
	New Column( "USL",
		Numeric,
		"Continuous",
		Format( "Best", 12 ),
		Set Selected,
		Set Values( [3, 3, 3, 6, 6, 6, 9, 9, 9] )
	)
);
Georg

View solution in original post

4 REPLIES 4
statman
Super User

Re: Filtered Spec limit in a control chart for several features

I'm sure Jim will be able to help with a script, but I have to ask why do you want spec. limits on a control chart?  Spec. limits are independently derived (or established) from the actual variability in the process.  Confusing Control limits and Spec. limits will make it more difficult to understand what is going on in the process. If you are using the Shewhart type chart, the control charts are meant to understand the consistency/stability of the within subgroup variation (Range chart) and then compare the within to the between (Xbar chart).  You are plotting averages and typically specs. relate to individuals, not averages. Specs. are intended to establish the limits of form, fit and function. If you want to get an estimate of the variability (Rbar/d2) and create a distribution, then you could add specs. to the distribution.

"All models are wrong, some are useful" G.E.P. Box
jthi
Super User

Re: Filtered Spec limit in a control chart for several features

Most of the time if you want to have specification limits in JMP I would suggest splitting data and using Column Properties. Also is there a reason why you have to use data filter (with split data you would be using column switcher)?

-Jarmo
Georg
Level VII

Re: Filtered Spec limit in a control chart for several features

Have a look at the following script,

it creates a table, and inside is a script that may perform what you want.

It splits the Features into columns and sets the USL.

 

I think the same as @jthi , having data with different ranges (or specs) in separate columns makes it easier.

 

New Table( "test-split",
	Add Rows( 9 ),
	New Script(
		"__split_usl",
		cdt = Current Data Table();
		Summarize( cdt, spec_lst = by( :Feature ), usl_lst = Mean( :USL ) );
		sdt = cdt << Data Table( "test-split" ) <<
		Split(
			Split By( :Feature ),
			Split( :data ),
			Remaining Columns( Drop All ),
			Sort by Column Property,
			Output table( "Split Table with USL" )
		);
		For( i = 1, i <= N Items( spec_lst ), i++,
			Eval(
				Eval Expr(
					Column( sdt, spec_lst[i] ) <<
					Set Property(
						"Spec Limits",
						{USL( Expr( usl_lst[i] ) ), Show Limits( 1 )}
					)
				)
			)
		);
	),
	New Column( "Feature",
		Character,
		"Nominal",
		Set Values( {"A", "A", "A", "B", "B", "B", "C", "C", "C"} )
	),
	New Column( "data",
		Numeric,
		"Continuous",
		Format( "Best", 12 ),
		Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9] )
	),
	New Column( "USL",
		Numeric,
		"Continuous",
		Format( "Best", 12 ),
		Set Selected,
		Set Values( [3, 3, 3, 6, 6, 6, 9, 9, 9] )
	)
);
Georg

Re: Filtered Spec limit in a control chart for several features

You should consider using the Process Screening platform instead.  You can assign Feature as a grouping variable.

Process specification limits that differ based on a grouping column - JMP User Community