안녕하세요.
저는 프로세스 능력 분석을 사용하여 보고서에 대한 차트를 생성하고 있습니다.
요약 표 중 하나는 '불합격'에 대한 것으로, 실패율을 나타내는 데에도 사용할 수 있습니다.
Nonformance 테이블에서 수율을 해석하는 대신 수율 수치를 직접 보여주는 테이블을 생성하는 데 관심이 있습니다. JMP에서 제공되는 기본 옵션을 통해 직접 구현할 수 있는 방법이 있을까요?
관심 있는 매개변수에 대한 수율을 계산하는 수식 열을 만듭니다.
(사양의 매개변수)이면 yield = 1이고 그렇지 않으면 yield = 0입니다.
그런 다음 수확량 열의 평균을 계산하는 요약 표를 만듭니다.
감사합니다. 수익률 열을 수동으로 생성하는 번거로움을 피하고 싶었는데, 그게 유일한 방법인 것 같습니다. 제가 찾던 방식은 아니지만, 간단하고 직관적이네요.
데이터 테이블에서 하는 것이 가장 쉬운 옵션이지만 JSL을 사용할 의향이 있다면 불일치 테이블 상자를 조작하여 수익률 %도 포함할 수 있습니다(비동의에 수익률 %를 포함하는 것은 약간 이상할 수 있음) 또는 일치를 위해 별도의 outlinebox+tablebox를 추가할 수 있습니다(배치가 번거로울 수 있음)
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))
);

실제로 이 질문은 자주 나오기 때문에 많은 사람에게 도움이 될 것입니다.
스크립트는 spec 속성이 있는 열을 선택하라는 메시지를 표시합니다. 따라서 이 스크립트를 실행하기 전에 spec 속성이 설정되어 있는지 확인해야 합니다. 또한 그룹화 변수로 분할된 각 열의 in-spec 비율을 요약하는 그래프도 생성합니다.
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 )} )
)
);
안녕하세요,
모두 좋은 답변입니다. 하지만 JMP 19부터 공정 능력 플랫폼과 분배 플랫폼의 공정 능력 분석에 새로운 옵션이 추가되어 In-Spec 지표 수식을 사용하여 데이터 테이블에 열을 자동으로 저장할 수 있다는 점을 알려드리고 싶었습니다. JMP 설명서는 "Save In Spec Indicator Formulas"에서 확인하실 수 있습니다.
프로세스 역량 플랫폼의 빨간색 삼각형 메뉴 '저장' 하위 메뉴 옵션에서 해당 옵션을 찾을 수 있습니다.

Distribution 플랫폼 내의 프로세스 능력 분석 보고서에서 프로세스 능력 빨간색 삼각형 메뉴 아래에서 이 옵션을 찾을 수 있습니다.

In Spec 지표 공식을 사용하면 분석하고 조작하기가 쉽습니다. 도움이 되셨으면 좋겠습니다.
로라