cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
syshah_psiq
Level I

Process capability Non-conformance to conformance

Hello.

I am using the Process Capability analysis to generate charts for my reports.

One of the summary tables is for 'Nonconformance', which can also be used to represent failure rate

I am interested in generating a table that shows yield numbers directly instead of having to interpret it from the Nonformance table. Is there a way to achieve that directly through the default options available within JMP?

6 REPLIES 6

Re: Process capability Non-conformance to conformance

Create a formula column that calculates yields for the parameters of interest.

If (parameter in spec) then yield = 1 else yield = 0

Then create a summary table  which computes the mean of the yield columns. 

syshah_psiq
Level I

Re: Process capability Non-conformance to conformance

Thanks. I was hoping to avoid having to manually create a yield column, but it does seem that that would be the only way. It's not quite what I was looking for, but it simple and direct. 

jthi
Super User

Re: Process capability Non-conformance to conformance

Doing it in data table is the easiest option, but if you are willing to use some JSL you could manipulate the non-conformance table box to also include Yield % (might be a bit weird to have Yield % in nonconformance though) or add separate outlinebox+tablebox for conformance (placing can be annoying)

Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
obj = dt << Process Capability(
	Process Variables(:PNP1),
	Individual Detail Reports(1),
	{:PNP1 << Process Capability Analysis(Nonconformance(1))}
);


tb = Report(obj)["Nonconformance", TableBox(1)];
obsperc = tb[Number Col Box("Observed %")] << get as matrix;
yieldperc = J(3, 1, 100) - obsperc;
(Report(obj)["Nonconformance", TableBox(1)]) << Append(
	Number Col Box("Yield %", yieldperc, << Set Format("Fixed Dec", 9, 4))
);

jthi_0-1762526689905.png

 

-Jarmo

Re: Process capability Non-conformance to conformance

Actually this question comes up a lot so this will be helpful to many.

The script will prompt you to select the columns which have a spec property.  So you need to make sure the spec property is set before running this.  It also creates a graph summarizing the in spec rates for each column split by grouping variables.  

Names Default To Here( 1 );
dt = Current Data Table();

dlg = Column Dialog(
	spec_cols = ColList( "Spec Columns", MinCol( 1 ), MaxCol( 1000 ) ),
	group_cols = ColList( "Group Columns", MinCol( 1 ), MaxCol( 20 ) )
);
If( dlg["Button"] != 1,
	Beep();
	Throw();
);
col_list = dlg["spec_cols"];
group_list = dlg["group_cols"];

for (i=1, i <= nitems(col_list), i++,
	col_name = col_list[i] << Get Name;
	specproperty = col_list[i] << Get Property( "Spec limits" );
	
	if( (contains(char(specproperty), "LSL") > 0) & (contains(char(specproperty), "USL") > 0),
		Eval(Eval Expr(
		dt << New Column( col_name || " In Spec", Numeric, "Continuous", Format( "Best", 12 ),
		Formula(if((Expr(col_list[i]) > Expr(specproperty["LSL"])) & (Expr(col_list[i]) < Expr(specproperty["USL"])), 1, 0 )))
		));	
	);
	if( (contains(char(specproperty), "LSL") == 0) & (contains(char(specproperty), "USL") > 0),
		Eval(Eval Expr(
		dt << New Column( col_name || " In Spec", Numeric, "Continuous", Format( "Best", 12 ),
		Formula(if(Expr(col_list[i]) < Expr(specproperty["USL"]), 1, 0 )))
		));
	);
	if( (contains(char(specproperty), "LSL") > 0) & (contains(char(specproperty), "USL") == 0),
		Eval(Eval Expr(
		dt << New Column( col_name || " In Spec", Numeric, "Continuous", Format( "Best", 12 ),
		Formula(if(Expr(col_list[i]) > Expr(specproperty["LSL"]), 1, 0 )))
		));
	);	
);

cols = dt << Get Column Names();
inspec_cols = {};
for (i=1, i <= nitems(cols), i++,
	if (Contains(cols[i], "In Spec"),
		Insert Into(inspec_cols, cols[i])
	);
);

dt << Group Columns("In Spec Cols", inspec_cols);

dt_inspec_stack = dt << Stack(
	columns( Column Group( "In Spec Cols" ) ),
	Source Label Column( "Spec Columns" ),
	Stacked Data Column( "In Spec" ),
	Drop All Other Columns( 1 ),
	"Non-stacked columns"n( Keep( group_list ) ),
	Output Table("Stack of In Spec Columns")
);

summary_group = {};
for (i=1, i <= nitems(group_list), i++,
	col_name = group_list[i] << Get Name;
	Insert Into(summary_group, col_name);
);
Insert Into(summary_group,"Spec Columns");

dt_inspec_summary = dt_inspec_stack << Summary(
	Group( summary_group ),
	Mean( :In Spec ),
	Freq( "None" ),
	Weight( "None" ),
	output table name(
		"Summary of In Spec Columns"
	)
);

dt_inspec_summary << New Column("CI", Numeric, "Continuous", Format("Best",12),
	Formula(Root( (:"Mean(In Spec)"n * (1 - :"Mean(In Spec)"n)) / :N Rows ) * 1.96)
);

dt_inspec_summary << Graph Builder(
	Size( 1280, 720 ),
	Show Control Panel( 0 ),
	Variables(
		X( :Spec Columns ),
		Y( :"Mean(In Spec)"n ),
		Group X( :Reactor ),
		Interval( :CI )
	),
	Elements(
		Points( X, Y, Legend( 5 ), Error Interval( "Custom Interval" ) ),
		Line( X, Y, Legend( 6 ) )
	),
	SendToReport(
		Dispatch( {}, "Mean(In Spec)", ScaleBox,
			{Format( "Percent", 12, 0 ), Min( 0 ), Inc( 0.2 ), Minor Ticks( 1 ),
			Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
		),
		Dispatch( {}, "Graph Builder", FrameBox, {Reference Line Order( 3 )} ),
		Dispatch( {}, "Graph Builder", FrameBox( 2 ), {Reference Line Order( 3 )} ),
		Dispatch( {}, "Graph Builder", FrameBox( 3 ), {Reference Line Order( 3 )} )
	)
);

 

Re: Process capability Non-conformance to conformance

Hello,

These are all good answers, but I did also want to let everyone know that starting with JMP 19 there is a new option in the Process Capability platform and in process capability analysis within the Distribution platform that allows you to automatically save columns to the data table with In-Spec indicator formulas.  See the JMP documentation here: Save In Spec Indicator Formulas.  

You can find the option in the Process Capability platform under the red triangle menu Save submenu options.

ProcCapSaveInSpec.jpg 

ProcCapSaveInSpecCols.jpg

In the process capability analysis report within the Distribution platform, you can find this option under the Process Capability red triangle menu.

DistribProcCapInSpec.jpg

Once you have the In Spec indicator formulas they are easy to analyze and manipulate.  I hope you find this helpful

Laura

Re: Process capability Non-conformance to conformance

Thanks for pointing that out @Laura_Lancaster.  It would be super helpful to have this option available from Process Screening as well and to have a column which indicates the overall in spec rate taking into account all in spec indicator columns.

Recommended Articles