こんにちは。
プロセス能力分析を使用してレポートのグラフを生成しています。
要約表の1つは「不適合」用であり、これは故障率を表すためにも使用できます。
不適合表から解釈するのではなく、歩留まり数値を直接表示する表を生成したいと考えています。JMPのデフォルトオプションを使って直接実現する方法はありますか?
関心のあるパラメータの収量を計算する数式列を作成します。
(仕様内のパラメータ)の場合、yield = 1、そうでない場合はyield = 0
次に、利回り列の平均を計算する要約テーブルを作成します。
ありがとうございます。利回り列を手動で作成しなくて済むようにしたかったのですが、どうやらそれが唯一の方法のようです。探していたものとは少し違いますが、シンプルで直接的です。
データ テーブルで行うのが最も簡単な方法ですが、JSL を使用する場合は、不適合テーブル ボックスを操作して歩留まり % も含めることができます (ただし、不適合に歩留まり % を含めるのは少し奇妙かもしれません)。または、適合用に別のアウトライン ボックスとテーブル ボックスを追加することもできます (配置が面倒な場合があります)。
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以降、工程能力プラットフォームと工程能力分析の分布プラットフォームに新しいオプションが追加され、仕様内指標の式を含む列をデータテーブルに自動的に保存できるようになりました。JMPのドキュメント「仕様内指標の式を保存」をご覧ください。
このオプションは、プロセス機能プラットフォームの赤い三角形のメニューの [保存] サブメニュー オプションの下にあります。

配布プラットフォーム内のプロセス能力分析レポートでは、プロセス能力の赤い三角形のメニューの下にこのオプションがあります。

一度In Spec指標の計算式がわかれば、分析や操作は簡単です。お役に立てれば幸いです。
ローラ