
一連の管理図の現在または新しい固定管理限界と比較して、古い管理限界がどのようになるかを確認したいという問題が発生しました。 通常、各グラフに参照線を追加しますが、長い間忘れられていた (少なくとも私にとっては) プラットフォーム メッセージを使用する、より良い方法があるかもしれないと考えています。
今年の初め、私は新しい列プロパティを追加するとどうなるか考えてみました。この場合、アクションとアラートの制限環境モニタリング図の場合は、その列プロパティを管理図の基準線として使用します。
Scripting Index でまったく異なるものを探しているときに、「Add Limits」という関数を見つけました。 私の知る限り、この関数は長い間、少なくとも JMP 14 より前から存在しており、上限および下限管理限界を管理図に送信するために使用できます。 これらの制限は破線で表示され、グラフの横の表にリストされます。 それを実現するにはかなりの JSL が必要になるので、このような非常に便利なユーティリティを発見できてうれしいです。
「制限の追加」の基本的な使用法は次のようになります。ここで、JSL の最後の行は、破線の制限として使用する値を含むメッセージをチャートに送信します。
//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 )} ) );
もちろん、どの列に対しても「制限の追加」を動的に使用したいので、それには少し手間がかかります。
まず、例として使用するテーブルを設定してみましょう。テーブルの設定中に、テーブルの構築直後に使用するランダム データを生成する数式を削除していることに注意してください。 これにより、テーブル内の値が修正されます。
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には 2 つの値があります。 LCL(20) 、 とUCL(30) 。 これらの値を新しい管理図で使用できます。
OCL = Column( dt, 1 ) << Get Property( "Old Control Limits" );Show( OCL[1], OCL[2] );
次の数行は非常に奇妙に見えるかもしれませんが、非常に堅牢であり、JSL の関数ベースの構造を利用しています。
まず、空の引数、または空に近い引数をいくつか定義し、それらを一緒にネストします。これらの式を設定することで、各部分を評価せずに処理できるようになります。CCBE 、管理図ビルダー式は関数です。管理図ビルダー2 つの引数を指定すると、変数とコントロールパネルを表示。
次に、c という新しい引数を追加します。ハート()管理図ビルダー機能に追加します。
- 新しい変数、 CE引数 c を持つ式です。ハートチャートには引数が含まれており、位置(1) 。
- 追加したい、制限を追加したいチャート引数なので変数がありますああ、空のオブジェクトを参照するには制限を追加する表現。
- 最後に、という空のリストを作成します。ル、これには私が得た制限が含まれますプロパティの取得の中にOCL前のステップの変数。
ccbe = Expr(Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) ));
ce = Expr( chart( position( 1 ) ) );
ae = Expr( add limits() );
le = {};
次に、これらの部分を重ねてこれを実行します。
- まず、リストにあるものを取得しますOCLそしてそれを中に挿入しますル。
- 第二に、私は取るルそしてそれを中に挿入しますああ、続いて挿入ああの中へCE 。 2番目のケースではラップしましたああの中に名前 Expr() 。 これにより、次の評価式が得られますああ評価せずに。 これNameExpr()方法は超便利です。
- 第三に、私は挿入しますCEにCCBE 、これは管理図式全体です。
- も含めました見せる各ステップの後で、関数がどのように構築されているかをログで確認できます。
- 最後のステップはグラフを取得することです。 ただ走るだけでCCBE完全な式を保持する変数が単独で評価され、古い管理限界を表す破線を含む管理図が得られます。これは列のプロパティから取得されました。
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;
もう少し努力すれば、現在および古い管理限界を含むテーブルから開始することが可能であると確信しています。これを使用して、プロセス変数のテーブル全体のすべての列プロパティを設定できます。
スクリプト全体が添付されています。
良い@バイロン_JMP
補足 - Set Property() を使用して独自のプロパティを作成できるとは知りませんでした。 事後的には意味があり、列は単なる別のオブジェクトであるため、オブジェクト (列、テーブル) の変数/値を設定するための新しいテーブル変数と同等です。 ナゲットをありがとう!