JSLを使用して、管理図を作成したり、テストをカスタマイズしたり、警告スクリプトを実行したりできます。
ここでは、JSLスクリプトを使ってさまざまな管理図を作成する方法を説明します。管理図の概要については、『品質と工程』の「管理図ビルダー」を参照してください。管理図ビルダーにおけるスクリプトの基本的な記述方法は次のとおりです。
Control Chart Builder(
Class("Shewhart Variables"|"Shewhart Attribute"|"Short Run"|"Rare Event"),
Variables( Y( column ), <Subgroup( column )>, <Phase( column )>, <Part( column )>, <n Trials( column )>,
<Chart(
Position( number ),
Points( Statistic( "statistic" ), <点のオプション> ),
Limits( Sigma( "sigma" ), <管理限界のオプション> ),
)>,
);
Class、Variable、Statistic、Sigmaのオプションを組み合わせて指定することで、さまざまな管理図を作成できます。
これ以降は、各種管理図を作成するスクリプトの基本的な記述方法を示します。
IMR管理図を作成するには、連続変数のYを追加します。
dt << Control Chart Builder( Variables( Y( continuous column ) ) );
XBar/S管理図を作成するには、Y変数を追加して、サブグループの変数またはサブグループサイズを指定します。ばらつき図のStatisticをStandard Deviation(標準偏差)に、また位置図のSigmaもStandard Deviation(標準偏差)に設定する必要があります。
// サブグループの変数
dt << Control Chart Builder(
Variables( Y( column ), Subgroup( column ) ),
Chart( Position( 1 ), Limits( Sigma( "Standard Deviation" ) ) ),
Chart( Position( 2 ) ,
Points( Statistic( "Standard Deviation" ) ),
Limits( Sigma( "Standard Deviation" ) )
)
);
// サブグループのサイズを指定
dt << Control Chart Builder(
Variables( Y( column ) ),
Set Subgroup Size( number ),
Chart( Position( 1 ), Limits( Sigma( "Standard Deviation" ) ) ),
Chart( Position( 2 ) ,
Points( Statistic( "Standard Deviation" ) ),
Limits( Sigma( "Standard Deviation" ) )
)
);
XBar/R管理図を作成するには、Y変数を追加して、サブグループの変数またはサブグループサイズを指定します。
// サブグループの変数
dt << Control Chart Builder(
Variables( Y( column ), Subgroup( column ) ),
);
// サブグループのサイズを指定
dt << Control Chart Builder(
Variables( Y( column ) ),
Set Subgroup Size ( number )
);
短期操業偏差管理図を作成するには、ClassをShort Runに設定し、Part変数を追加します。位置図とばらつき図のStatisticの値はそれぞれ、Centered(中心化)、Moving Range Centered(中心化(移動範囲))に自動的に設定されます。
dt << Control Chart Builder(
Class( "Short Run" ),
Variables( Y( column ), Part( column ) )
);
標準化短期操業管理図を作成するには、ClassをShort Runに設定し、Part変数を追加します。位置図のStatisticをStandardized(標準化)に、ばらつき図のStatisticをMoving Range Standardized(標準化(移動範囲))に設定する必要があります。
dt << Control Chart Builder(
Class( "Short Run" ),
Variables( Y( column ), Part( column ) ),
Chart( Position( 1 ), Points( Statistic( "Standardized" ) ) ),
Chart( Position( 2 ), Points( Statistic( "Moving Range Standardized" ) ) )
);
ランチャートを作成するには、Y変数を追加し、管理限界をオフにし、ばらつき図を削除します。
dt << Control Chart Builder(
Show Two Shewhart Charts( 0 ),
Variables( Y( column ) ),
Chart( Limits( Show Lower Limit( 0 ), Show Upper Limit( 0 ) ) )
);
P管理図を作成するには、Y変数を追加し、ClassをShewhart Attributeに設定し、StatisticをProportion(割合)に、SigmaをBinomial(二項)に設定します。
dt << Control Chart Builder(
Class( "Shewhart Attribute" ),
Variables( Y( column ), <Subgroup( column )>, <Phase( column )> ),
Chart(
Points( Statistic( "Proportion" ) ),
Limits( Sigma( "Binomial" ) )
)
);
NP管理図を作成するには、Y変数を追加し、ClassをShewhart Attributeに設定し、StatisticをCount(度数)に、SigmaをBinomial(二項)に設定します。
dt << Control Chart Builder(
Class( "Shewhart Attribute" ),
Variables( Y( column ), <Subgroup( column )>, <Phase( column )> ),
Chart(
Points( Statistic( "Count" ) ),
Limits( Sigma( "Binomial" ) )
)
);
C管理図を作成するには、Y変数を追加し、ClassをShewhart Attributeに設定し、StatisticをCount(度数)に、SigmaをPoissonに設定します。
dt << Control Chart Builder(
Class( "Shewhart Attribute" ),
Variables( Y( column ), <Subgroup( column )>, <Phase( column )> ),
Chart(
Points( Statistic( "Count" ) ),
Limits( Sigma( "Poisson" ) )
)
);
U管理図を作成するには、Y変数を追加し、ClassをShewhart Attributeに設定し、StatisticをProportion(割合)に、SigmaをPoissonに設定します。
dt << Control Chart Builder(
Class( "Shewhart Attribute" ),
Variables( Y( column ), <Subgroup( column )>, <Phase( column )> ),
Chart(
Points( Statistic( "Proportion" ) ),
Limits( Sigma( "Poisson" ) )
)
);
Laney P′管理図を作成するには、Y変数を追加し、ClassをShewhart Attributeに設定し、StatisticをProportion(割合)に、SigmaをLaney P Prime(Laney Pプライム)に設定します。
dt << Control Chart Builder(
Class( "Shewhart Attribute" ),
Variables( Y( column ), <Subgroup( column )> ),
Chart(
Points( Statistic( "Proportion" ) ),
Limits( Sigma( "Laney P Prime" ) )
)
);
Laney U′管理図を作成するには、Y変数を追加し、ClassをShewhart Attributeに設定し、StatisticをProportion(割合)に、SigmaをLaney U Prime(Laney Uプライム)に設定します。
dt << Control Chart Builder(
Class( "Shewhart Attribute" ),
Variables( Y( column ), <Subgroup( column )> ),
Chart(
Points( Statistic( "Proportion" ) ),
Limits( Sigma( "Laney U Prime" ) )
)
);
Levey-Jennings法による管理図を作成するには、Y変数を追加し、ばらつき図を削除し、SigmaをLevey Jenningsに設定します。Statisticは自動的にIndividual(個々の測定値)に設定されます。
dt << Control Chart Builder(
Show Two Shewhart Charts( 0 ),
Variables( Y( column ) ),
Chart(
Limits( Sigma( "Levey Jennings" ) )
)
);
平均のIMR管理図を作成するには、Y変数を追加して、サブグループの変数またはサブグループサイズを指定します。ばらつき図のStatisticをMoving Range on Means(平均(移動範囲))に、両方の図のSigmaをMoving Range(移動範囲)に設定する必要があります。
// サブグループの変数
dt << Control Chart Builder(
Variables( Y( column ), Subgroup( column ) ),
Chart( Position( 1 ), Limits( Sigma( "Moving Range" ) ) ),
Chart( Position( 2 ) ,
Points( Statistic( "Moving Range on Means" ) ),
Limits( Sigma( "Moving Range" ) )
)
);
// サブグループのサイズを指定
dt << Control Chart Builder(
Variables( Y( column ) ),
Set Subgroup Size( number ),
Chart( Position( 1 ), Limits( Sigma( "Moving Range" ) ) ),
Chart( Position( 2 ) ,
Points( Statistic( "Moving Range on Means" ) ),
Limits( Sigma( "Moving Range" ) )
)
);
グループ標準偏差のIMR管理図を作成するには、Y変数を追加して、サブグループの変数またはサブグループサイズを指定します。位置図のStatisticをStandard Deviation(標準偏差)に、ばらつき図のStatisticをMoving Range on Std Dev(標準偏差(移動範囲))に、両方の図のSigmaをMoving Range(移動範囲)に設定する必要があります。
// サブグループの変数
dt << Control Chart Builder(
Variables( Y( column ), Subgroup( column ) ),
Chart(
Position( 1 ),
Points( Statistic( "Standard Deviation" ) ),
Limits( Sigma( "Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range on Std Dev" ) ),
Limits( Sigma( "Moving Range" ) )
)
);
// サブグループのサイズを指定
dt << Control Chart Builder(
Variables( Y( column ) ),
Set Subgroup Size( number ),
Chart(
Position( 1 ),
Points( Statistic( "Standard Deviation" ) ),
Limits( Sigma( "Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range on Std Dev" ) ),
Limits( Sigma( "Moving Range" ) )
)
);
メディアン移動範囲の管理図を作成するには、Y変数を追加し、位置図とばらつき図の両方のSigmaをMedian Moving Range(メディアン移動範囲)に設定します。
dt << Control Chart Builder(
Variables( Y( column ) ),
Chart( Position( 1 ), Limits( Sigma( "Median Moving Range" ) ) ),
Chart( Position( 2 ), Limits( Sigma( "Median Moving Range" ) ) )
);
グループ平均(メディアン移動範囲)の管理図を作成するには、Y変数を追加して、サブグループの変数またはサブグループサイズを指定します。ばらつき図のStatisticをMoving Range on Means(平均(移動範囲))に、両方の図のSigmaをMedian Moving Range(メディアン移動範囲)に設定する必要があります。
// サブグループの変数
dt << Control Chart Builder(
Variables( Y( column ), Subgroup( column ) ),
Chart(
Position( 1 ),
Limits( Sigma( "Median Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range on Means" ) ),
Limits( Sigma( "Median Moving Range" ) )
)
);
// サブグループのサイズを指定
dt << Control Chart Builder(
Variables( Y( column ) ),
Set Subgroup Size( number ),
Chart(
Position( 1 ),
Limits( Sigma( "Median Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range on Means" ) ),
Limits( Sigma( "Median Moving Range" ) )
)
);
グループ標準偏差(メディアン移動範囲)の管理図を作成するには、Y変数を追加して、サブグループの変数またはサブグループサイズを指定します。位置図のStatisticをStandard Deviation(標準偏差)に、ばらつき図のStatisticをMoving Range on Std Dev(標準偏差(移動範囲))に、両方の図のSigmaをMedian Moving Range(メディアン移動範囲)に設定する必要があります。
// サブグループの変数
dt << Control Chart Builder(
Variables( Y( column ), Subgroup( column ) ),
Chart(
Position( 1 ),
Points( Statistic( "Standard Deviation" ) ),
Limits( Sigma( "Median Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range on Std Dev" ) ),
Limits( Sigma( "Median Moving Range" ) )
)
);
// サブグループのサイズを指定
dt << Control Chart Builder(
Variables( Y( column ) ),
Set Subgroup Size( number ),
Chart(
Position( 1 ),
Points( Statistic( "Standard Deviation" ) ),
Limits( Sigma( "Median Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range on Std Dev" ) ),
Limits( Sigma( "Median Moving Range" ) )
)
);
三元管理図を作成するには、Y変数を追加して、サブグループの変数またはサブグループサイズを指定し、ばらつき図を追加します。
// サブグループの変数
dt << Control Chart Builder(
Variables( Y( column ), Subgroup( column ) ),
Chart(
Position( 1 ),
Points( Statistic( "statistic" ) ),
Limits( Sigma( "sigma" ) ),
),
Chart(
Position( 2 ),
Points( Statistic( "statistic" ) ),
Limits( Sigma( "sigma" ) ),
),
Chart(
Position( 3 ),
Points( Statistic( "statistic" ) ),
Limits( Sigma( "sigma" ) )
)
);
// サブグループのサイズを指定
dt << Control Chart Builder(
Variables( Y( column ) ),
Set Subgroup Size ( number ),
Chart(
Position( 1 ),
Points( Statistic( "statistic" ) ),
Limits( Sigma( "sigma" ) ),
),
Chart(
Position( 2 ),
Points( Statistic( "statistic" ) ),
Limits( Sigma( "sigma" ) ),
),
Chart(
Position( 3 ),
Points( Statistic( "statistic" ) ),
Limits( Sigma( "sigma" ) )
)
);
G管理図を作成するには、ClassをRare Eventに設定し、負でない離散変数Yを追加します。Sigmaは自動的にNegative Binomial(負の二項)に設定されます。
dt << Control Chart Builder(
Class( "Rare Event" ),
Variables( Y( nonnegative discrete column ), <Subgroup( column )> ),
Chart(
Points( Statistic( "Count" ) )
)
);
T管理図を作成するには、ClassをRare Eventに設定し、負でない離散変数Yを追加します。SigmaをWeibullに設定する必要がありまず。
dt << Control Chart Builder(
Class( "Rare Event" ),
Variables( Y( nonnegative discrete column ), <Subgroup( column )> ),
Chart(
Points( Statistic( "Count" ) ),
Limits( Sigma( "Weibull" ) )
)
);
JSLを使って、管理図ビルダーでカスタムの参照線を追加する場合は、参照線のラベルに“LSL”、“USL”、 “AVG”を使用しないでください。これらの名前は、「管理図ビルダー」プラットフォームで使用されているキーワードです。
次の例では、独自のラベルを使って、カスタムの参照線を作成しています。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Control Chart Builder(
Variables( Y( :"身長(インチ)"n) ),
SendToReport(
Dispatch(
{},
"身長(インチ)",
ScaleBox,
{Add Ref Line( 70, "Solid", "Black", "Upper Limit", 1 ),
Add Ref Line( 55, "Solid", "Black", "Lower Limit", 1 )}
)
)
);
Customize Testsオプションによって、テストをカスタマイズしたり、複数のテストを一度に選択または選択解除したりできます。このオプションでは、テスト名、n、ラベルを指定できます。このオプションは、計量値または計数値の管理図でのみ使用できます。
次の例は、「テスト 1」というテストをカスタマイズし、そのカスタマイズされた「テスト 1」をオンにします。
dt = Open( "$SAMPLE_DATA/Quality Control/Diameter.jmp" );
dt << Control Chart Builder(
Variables( Subgroup( :日付 ), Y( :直径 ) ),
Customize Tests( Test 1( 2, "1" ) ), // テスト番号、n、ラベル
Chart( Position( 1 ), Warnings( Test 1( 1 ) ) ), // 「テスト1」をオンにする
Chart( Position( 2 ) )
);
警告スクリプトは、1つ以上のテストで異常が検出された場合に警告をします。警告スクリプトおよびそれに続くJSLスクリプトでは、次の変数を使用できます。
qc_col(列の名前)
qc_AlarmReportCol(列の名前)
qc_byLevel(By変数の水準)
qc_categoricalX(X軸がカテゴリカルであることを示す指示変数)
qc_test(異常が検出されたテスト)
qc_sample(標本番号)
qc_sampleWithinPhase(フェーズ内の標本番号)
qc_phase(異常が発生したフェーズのラベル)
qc_rows(警告が発生した行の行番号 文字列)
qc_nRows(データテーブルの行数)
qc_firstRow(標本の第1行)
qc_lastRow(標本の最終行)
qc_nSubgroups(サブグループの総数)
qc_chart(異常が発生した管理図)
qc_ChartName(異常が発生した管理図の名前)
qc_tableName(異常が発生したデータテーブルの名前)
qc_sampleName(異常が発生した標本の名前)
qc_phaseName(異常が発生したフェーズの名前)
qc_chartTypeNumber(管理図名への内部マッピング)
qc_value(警告が発生した特定の点の数値)
qc_statPlotted(プロットされた統計量の名前)
qc_where(除外された行の行番号 文字列)
qc_dataHidden(非表示のデータに関連する警告の指示変数)
qc_dataExcluded(除外されたデータに関連する警告の指示変数)
qc_ProportionFailures(管理外の標本の割合)
qc_SumFailures(管理外の標本の総数)
qc_staticLimits(その管理図の管理限界がユーザによって設定されているかの指示変数)
qc_WarningsTested(警告対象のテストのリスト)
qc_test1N(カスタマイズしたテスト1のnの値)
qc_test1Label(カスタマイズしたテスト1のラベル)
qc_test2N(カスタマイズしたテスト2のnの値)
qc_test2Label(カスタマイズしたテスト2のラベル)
qc_test3N(カスタマイズしたテスト3のnの値)
qc_test3Label(カスタマイズしたテスト3のラベル)
qc_test4N(カスタマイズしたテスト4のnの値)
qc_test4Label(カスタマイズしたテスト4のラベル)
qc_test5N(カスタマイズしたテスト5のnの値)
qc_test5M(カスタマイズしたテスト5のmの値)
qc_test5Label(カスタマイズしたテスト5のラベル)
qc_test6N(カスタマイズしたテスト6のnの値)
qc_test6M(カスタマイズしたテスト6のmの値)
qc_test6Label(カスタマイズしたテスト6のラベル)
qc_test7N(カスタマイズしたテスト7のnの値)
qc_test7Label(カスタマイズしたテスト7のラベル)
qc_test8N(カスタマイズしたテスト8のnの値)
qc_test8Label(カスタマイズしたテスト8のラベル)
警告が自動的に実行されるようにする1つの方法は、作成したスクリプトを「QC Alarm Script」という名前のデータテーブルスクリプト、または列プロパティとして格納することです。
次の例では、テストで異常が検出されるたびに、メッセージがログに自動的に書き込まれます。
dt = Open( "$SAMPLE_DATA/Quality Control/Coating.jmp" );
obj = dt << Control Chart Builder(
Variables( Y( :Weight ), Subgroup( :サンプル ) ),
Show Control Panel( 0 ),
Show Limit Labels( 1 ),
Alarm Script(
Write(
"テストで異常, テスト番号=",
qc_test,
" ,列=",
qc_col,
" 標本番号=",
qc_sample
)
)
);
obj << Chart( Position( 1 ), Warnings( Test 1( 1 ) ) );
Speak関数を使って、管理図のテスト結果を音声で通知させることもできます。以下に例を示します。
dt = Open( "$SAMPLE_DATA/Quality Control/Coating.jmp" );
dt << Control Chart Builder(
Variables( Y( :Weight ), Subgroup( :サンプル ) ),
Show Control Panel( 0 ),
Show Limit Labels( 1 ),
Alarm Script(
Speak(
Match( QC_Test,
1, "1点がAゾーンを超えています",
QC_Test, 2,
"連続した9点がCゾーン以上にあります", QC_Test,
5,
"連続した3点のうち2点がAゾーン以上に
あります"
)
)
),
Chart(
Position( 1 ),
Warnings( Test 1( 1 ), Test 2( 1 ), Test 5( 1 ) )
)
);
これらのスクリプトで、JSL警告コマンドのSpeak、Write、Mailを使用することができます。
「フェーズ(phase)」とは、データテーブル内の連続する観測値をグループにまとめたものです。たとえば、新しい工程で生産を開始する前と後は異なるフェーズだと定義できます。指定したフェーズ変数の水準ごとに、シグマや限界値が新たに計算され、また、ゾーンやテストの結果が新たに計算されます。
「Diameter.jmp」の各フェーズに対し、限界値を設定する例を次に示します。
New Table( "Phase Limits",
Add Rows( 8 ),
New Column( "_LimitsKey", Character, Nominal,
Set Values( {"_Sigma", "_Mean", "_LCL", "_UCL", "_Sigma", "_Mean", "_LCL", "_UCL"} )
),
New Column( "フェーズ", Character, Nominal,
Set Values( {"1", "1", "1", "1", "2", "2", "2", "2"} )
),
New Column( "直径", Continuous,
Set Values( [0.29, 4.3, 3.99, 4.72, 0.21, 4.29, 4, 4.5] )
)
);
dt = Open( "$SAMPLE_DATA/Quality Control/Diameter.jmp" );
dt << Control Chart Builder(
Variables( Y( :直径 ), Subgroup( :日付 ), Phase( :フェーズ ) ),
Show Control Panel( 0 ),
);