
管理図セットの現在または新しい固定管理限界と比較して、古い管理限界がどのように見えるかを確認したいという問題に遭遇しました。 通常、各グラフに参照線を追加しますが、長い間 (少なくとも私にとっては) 忘れられていたプラットフォーム メッセージを使用する、より良い方法があると思います。
今年の初め、私は、新しい列プロパティ (この場合は環境モニタリング チャートのアクションとアラート制限) を追加し、その列プロパティを管理図の基準線として使用するとどうなるかというアイデアをいじっていました。 EMブログへのリンク
Scripting Index でまったく別のものを探していたときに、"Add Limits" という機能に出くわしました。 私が知る限り、この関数は長い間、少なくとも v14 より前から存在しており、管理図に上限と下限を送信するために使用できます。 これらの制限は斜線で表示され、グラフの横にある表に一覧表示されます。 それを実現するには多くのJSLが必要になるため、このような高いユーティリティ機能を発見できてとてもうれしいです.
Add Limits の基本的な使い方は次のようになります。
//Example of adding limits to a control chart
ccb = dt << Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) );
ccb << chart( position( 1 ), Add Limits( {LCL( 20 ), UCL( 30 )} ) );
JSL の最後の行は、破線の範囲として使用する値を含むメッセージをチャートに送信します。
もちろん、任意の列で動的に使用したいので、少し余分な手の込んだ作業が必要です。
まず、例として使用するテーブルを設定します。
dt=New Table( "old and new control limits",Add Rows( 50 ),
New Column( "Column 1",Numeric,"Continuous",Format( "Best", 12 ),
Formula( Round( Random Normal( 25, 3 ), 0 ) )));
column(dt, 1)<< Delete Formula;
テーブルが作成された直後に、ランダム データを生成する数式を削除していることに注意してください。 これにより、テーブルの値が修正されます。
次のステップは、新しい種類の列プロパティを追加することです。これは、JMP にネイティブに存在しない独自のものです。
Column( dt, 1 ) << set property( "Old Control Limits", {LCL( 20 ), UCL( 30 )} );
この行を実行すると、データ テーブルの列に旧管理限界というプロパティが表示されます。
スクリプトが機能したかどうかを確認するために、これを行うことで列プロパティから値を確認できます。
OCL = Column( dt, 1 ) << Get Property( "Old Control Limits" );Show( OCL[1], OCL[2] );
新しい変数 OCL には、LCL(20) と UCL(30) の 2 つの値があります。
これらの値を新しい管理図で使用できます。
次の数行は非常に奇妙に見えるかもしれませんが、非常に堅牢で、JSL の関数ベースの構造を利用しています。
最初に、いくつかの空の、またはほぼ空の引数を定義してから、それらを入れ子にします。
ccbe = Expr(Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) ));
ce = Expr( chart( position( 1 ) ) );
ae = Expr( add limits() );
le = {};
これらの式を設定することで、各部分を評価せずに処理できます。
ccbe、管理図ビルダーの式は、「変数」と「コントロール パネルの表示」の 2 つの引数を持つ「管理図ビルダー」関数です。
管理図ビルダ関数に Chart() という新しい引数を追加したいと考えています。 新しい変数 ce は引数 "Chart" を持つ式であり、Chart には引数 "Position (1)" が含まれています。
Add Limits を Chart 引数に追加したいので、変数 ae を使用して、空の Add Limits 式を参照します。
最後に、「le」という名前の空のリストを作成しました。このリストには、前の手順の OCL 変数の「Get Properties」から取得した制限が含まれます。
次に、ピースを重ねていきます。
Insert Into( le, OCL );show( le );
Insert Into( ae, le );Show( ae );
Insert Into( ce, Name Expr( ae ) );Show( ce );
Insert Into( ccbe, Name Expr( ce ), 2 );
ccbe;
まず、OCL のリストを取得して、ファイルに挿入します。
次に、「le」を「ae」に挿入し、「ae」を「ce」に挿入します。 2 番目のケースでは、"ae" を Name Expr() 内にラップしました。 これにより、 ae を評価せずに評価された式が得られます。 この NameExpr() メソッドは非常に便利です。
最後に、管理図式全体である ce を ccbe に挿入します。
上記の JSL では、各ステップの後に "show" を含めて、ログで関数がどのように構築されているかを確認できるようにしました。
最後のステップは、グラフを取得することです。 ccbe を単独で実行するだけで、完全な式を保持する変数が評価され、列のプロパティに由来する古い管理限界を表す破線を含む管理図が得られます。
もう少し努力すれば、プロセス変数のテーブル全体のすべての列プロパティを入力するために使用できる、現在および古い管理限界を含むテーブルから始めることができると確信しています。
スクリプト全体は以下に含まれています。