「 グループ化列に基づいて異なるプロセス仕様限界」というタイトルのブログ記事を読んで、
その投稿では、グループ化列に基づく能力分析を1つのレポートウィンドウで取得する方法を説明しました。しかし、投稿を読み終えると、
この投稿では必要な分析が提供されましたが、各フェーズごとに個別の管理図が示されていたことに気付いたかもしれません。
おそらく、仕様限界がグラフ上にプロットされた単相管理図を探していたのでしょう...
JMPの優れた機能の 1 つは、柔軟なスクリプト言語です。JMP スクリプト言語 (JSL)を使用すると、必要なタイプのグラフを作成できます。このブログ投稿では、仕様限界がグラフにプロットされた単相管理図を作成するために必要なスクリプトについて詳しく説明します。
例: 書籍内のテキストの印刷
私のブログ記事「 グループ化列に基づいて異なるプロセス仕様の限界」では、印刷プロセスの例を紹介しました。その例を確認しましょう。印刷プロセスの変動により、線の歪み、つまり、傾き、太さ、長さの問題が発生する可能性があります。この例では、線の長さを考慮します。線が長すぎると、文章がページからはみ出てしまう可能性があります。線が短すぎると、ページ上に無駄なスペースが多く生じます。
この特定のデータには、2 種類の本のサイズがあります。ハードカバー本の幅は 17.78 cm です。ペーパーバック本の幅は 13.97 cm です。ハードカバー本の行の長さは、印刷された長さが 16 cm +/- 0.2 cm であれば適切であると見なされます。ペーパーバック本の行の長さは、印刷された長さが 12 +/- 0.4 cm であれば適切であると見なされます。印刷ごとに、最初と最後の本が測定に使用されます。行の長さは、各本の中央の指定されたページで測定されます。

分析
この例のフェーズ管理図を作成するには、[品質とプロセス] メニューから [管理図ビルダー] を選択します。[長さ] を Y にドラッグします。[タイプ] を [フェーズ] にドラッグします。[実行] を x 軸にドラッグします。

「 グループ化列に基づいて異なるプロセス仕様制限」というタイトルのブログ投稿から、仕様制限列プロパティまたは仕様制限コマンドは列全体 (この場合は長さ) に適用されるため、使用できないことがわかりました。つまり、両方のフェーズに同じ仕様制限が設定されますが、これは望ましくありません。したがって、スクリプトを使用してこれらを追加する必要があります。
管理図スクリプトの取得
このグラフを作成するスクリプトを取得するには、管理図ビルダーの横にある赤い三角形から「スクリプトをスクリプト ウィンドウに保存」を選択します。次のスクリプトが提供されます。
Control Chart Builder(
Show Capability( 0 ),
Variables( Subgroup( :Run ), Y( :Length ), Phase( :Type ) ),
Chart( Position( 1 ) ),
Chart( Position( 2 ) ),
SendToReport(
Dispatch(
{},
"Control Chart Builder",
FrameBox,
{DispatchSeg(
TextSeg( 3 ),
{Line Color( "None" ), Fill Color( "None" )}
), DispatchSeg(
TextSeg( 4 ),
{Line Color( "None" ), Fill Color( "None" )}
)}
)
)
);
スクリプトをより堅牢にし、目的に合わせて使いやすくするために、このスクリプトにいくつかのものを追加します。スクリプトの前にコードを追加して、必要なデータ テーブル (実際のデータと、後で説明する仕様制限テーブル) を開き、スクリプトにハンドルを割り当て、スクリプトを目的のデータ テーブルにポイントし、レポートにハンドルを追加します。
dt=Open("SpecChange.jmp"); //actual data
dtSpec=Open("specChangelimits.jmp"); //data containing specification limits
obj=dt<<CONTROL chart="" builder=""></CONTROL>
<P> </P>
<P>次に、この既存のスクリプトに仕様制限を追加する方法を検討する必要があります。</P>
<H3 id="toc-hId--476198926" id="toc-hId--1762693417">Hラインコマンド</H3>
<P><A href="https://www.jmp.com/en_us/software/data-analysis-software.html" target="_self" rel="noopener noreferrer">JMP</A>では、デフォルトでは、仕様限界線が参照線として追加されます。JSL を使用して参照線を追加することを検討することもできます。これを試してみると、これも必要な結果が得られないことがわかります。前述の方法と同様に、参照線はグラフ全体に適用されるため、両方のフェーズ (ハードカバーとペーパーバック) にわたって存在します。代わりに、線分を使用してフェーズごとに個別の仕様線を作成できます。使用する特定の線分は H Line です。H Line コマンドの形式は次のとおりです。</P>
<P> </P>
<CODE class=" language-jsl">H Line( x1, x2, y);
フレーム全体にわたって、y に x1 から x2 までの水平線を描画します。
x1とx2の値を決定する
JMP が既に知っている情報を活用できます。管理図は、グラフ上に管理限界線をすでに描画しているため、ハードカバーとペーパーバックの両方の x1 と x2 が何であるかをすでに知っています。これらの既存の線分を使用して、x1 と x2 を決定できます。
actLineSeg=(rpt[FrameBox(2)]<<XPATH>0, //if the description contains the word average
actx=Insert(actx , arg(actLineSeg,i)<<GET x="" values=""></GET></XPATH>
<P>上記のコードでは、まず位置チャートの線分を見つけます。次に、各線分の説明を取得します。actx と actPhase の 2 つのリストを作成します。説明に「Average」という単語が含まれている場合、線分からの x 値は actx に格納され、位相ラベルは actPhase に格納されます。</P>
<H3 id="toc-hId-1298808436" id="toc-hId-1722927253">Hラインのy引数の取得</H3>
<P>y を取得するために使用する方法は、この情報をどのように保存したかによって決まります。この例とブログ投稿では、ブログ投稿「 <A href="https://community.jmp.com/t5/JMPer-Cable/Process-specification-limits-that-differ-based-on-a-grouping/ba-p/36656" target="_self">グループ化列に基づいて異なるプロセス仕様の制限</A>」の場合と同様に、この情報が別のデータ テーブルに保存されていると想定します。</P>
<P> </P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="specChange2.png" style="width: 297px;"><span class="lia-inline-image-display-wrapper" image-alt="specChange2.png" style="width: 297px;"><img src="https://us.v-cdn.net/6038925/uploads/images/5995i8FBEFD91C35B15EE/specChange2.png" role="button" title="specChange2.png" alt="specChange2.png" /></span></SPAN></P>
<P> </P>
<P>actPhase の値 (前のスクリプトで取得) を、仕様限界データ テーブルの列「Type」と一致させる必要があります。フェーズ変数は、必ずしも「Type」と呼ばれるわけではありません。JSL をより汎用的にして他の例でも使用できるようにするために、管理図ビルダー レポートからフェーズ変数の名前を取得できます。具体的には、グラフの真上に表示されるフェーズ ラベルからこの情報を取得できます。</P>
<P> </P>
<CODE class=" language-jsl">actPhaseName=(rpt[GraphBuilderBox(1)]<<XPATH></XPATH>
<P>仕様限界表の適切な行が決定されたら、仕様限界データ表の列 LSL、ターゲット、および USL から下限仕様限界、目標仕様限界、上限仕様限界の値を取得できます。</P>
<P> </P>
<CODE class=" language-jsl">for(j=1, j<=narg(actx),j++, //for every argument of actx
for(k=1, k<=nrows(dtSpec), k++, //for every row of the specification data table
if(arg(actPhase,j)==Column(dtSpec, actPhaseName)[k],
//if actPhase is equal to Type in the specification table
H Line( arg(actx,j)[1], arg(actx,j)[2], Column(dtSpec, "LSL")[k] );
H Line( arg(actx,j)[1], arg(actx,j)[2], Column(dtSpec, "Target")[k]);
H Line( arg(actx,j)[1], arg(actx,j)[2], Column(dtSpec, "USL")[k] );
);
);
);
グラフィックスクリプト
スクリプトで H ラインを使用するにはどうすればよいでしょうか。HLine コマンドは、グラフィックス スクリプト コマンドでラップする必要があります。グラフィックス スクリプトは、レポート ウィンドウ内の既存のフレームにグラフィック項目を追加する方法です。スクリプトに説明を追加し、仕様限界線のペンの色を選択します。必要に応じて、グリッド線の順序と参照線の順序を決定することもできます。グラフィックス スクリプトは、SendTo Report コマンドを使用して管理図ビルダー ウィンドウに送信できます。
obj<<SENDTOREPORT></SENDTOREPORT>
<H3 id="toc-hId--1221151498" id="toc-hId-913580627">結論</H3>
<P>これらすべての部分をまとめると、次のスクリプトが完成します。</P>
<P> </P>
<CODE class=" language-jsl">dt=Open("SpecChange.jmp"); //actual data
dtSpec=Open("specChangelimits.jmp"); //data containing specification limits
obj=dt<<CONTROL chart="" builder="">0, //if the description contains the word average
actx=Insert(actx , arg(actLineSeg,i)<<GET x="" values=""></GET></CONTROL>
<P>このスクリプトを実行すると、次の結果が得られます。</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary." style="width: 686px;"><span class="lia-inline-image-display-wrapper" image-alt="Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary." style="width: 686px;"><img src="https://us.v-cdn.net/6038925/uploads/images/5996i6790A59F4F9F1592/specchangefinished.png" width="686" height="346" role="button" title="specchangefinished.png" alt="Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary.</span></span><SPAN class="lia-inline-image-caption" onclick="event.preventDefault();">注: ハードカバーの場合、すべての線が非常に接近しているため、仕様の限界を確認するのは困難です。必要に応じて、インターフェイスまたは JSL を使用して Y 軸を変更し、線をより明確に確認することができます。</SPAN></SPAN></P>
<P>上記の画像から、ハードカバーには 1 セットの仕様限界 (15.98、16、16.02) が表示され、ペーパーバックには別のセットの仕様限界 (11.6、12、12.4) が表示されることがわかります。</P>
<P>このスクリプトは、フェーズ レベルを必要な数だけ持つことができ、レベルに任意の名前を付けることができ、フェーズ列に任意の名前を付けることができるという意味で汎用的です。ただし、スクリプトでは、仕様限界を別のデータ テーブルに保存する必要があります。仕様限界データ テーブルでは、フェーズ レベルごとに 1 つの行が必要です。フェーズ レベル名は、CCB レポートに表示されるレベル名と一致する必要があります。データ テーブルには、下限仕様限界、ターゲット、上限仕様限界をそれぞれ保存する LSL、ターゲット、および USL というタイトルの列が含まれている必要があります。</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="cartoon_thought_bubble_3.jpg" style="width: 150px;"><span class="lia-inline-image-display-wrapper" image-alt="cartoon_thought_bubble_3.jpg" style="width: 150px;"><img src="https://us.v-cdn.net/6038925/uploads/images/6004i22873971DFC74A41/cartoon_thought_bubble_3.jpg" role="button" title="cartoon_thought_bubble_3.jpg" alt="cartoon_thought_bubble_3.jpg" /></span></SPAN></P>