JSL を使用して IR 管理図の制限を取得する方法こんにちは、
以下に示すように、複数のパラメータ列を含む制限テーブルが保存されていると仮定します。 このファイルを読み取り、JSL を使用して一致するパラメーターの制限を IR チャートに適用する方法はありますか?

次の投稿によると、JSL を使用して管理図ダイアログから「Get Limits」機能を呼び出す方法はありません。 この場合、制限をハードコーディングすることが提案されました。
IR 管理図の能力の制限を取得する方法
制限ファイルを読み取り、シグマ、平均、LCL、および UCL を変数としてキャプチャし、それらを各パラメーターの Chart Col に渡す必要があると考えています。これが唯一の方法である場合、最も効率的なアプローチは何でしょうか?
以下の、位相レベルと制限がハードコードされた単一管理図パラメータのコード例を参照してください。
Control Chart(
Sample Label( :WEEK ),
Phase( :YEAR ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col(
:P1,
Individual Measurement(
Test 1( 1 ),
Test 2( 1 ),
Test 5( 1 ),
Test 6( 1 ),
Phase Level(
"2019",
Sigma( 0.0106958422036977 ),
Avg( 5.59766666666667 ),
LCL( 5.56557914005557 ),
UCL( 5.62975419327776 )
)
)
)
);
よろしくお願いします。
ライ
Re: JSL を使用して IR 管理図の制限を取得する方法素晴らしい! それが私を正しい軌道に乗せてくれました。
ありがとう!
Re: JSL を使用して IR 管理図の制限を取得する方法IR 管理図の Get Limits コマンドで JSL を使用できます。あなたが参照した投稿は、管理限界ではなく仕様限界に関するものでした。管理限界がある場合は、Get Limits コマンドで次の JSL を使用できます。
dt = Open("$SAMPLE_DATA/Quality Control/Coating.jmp");
obj = Control Chart(
Sample Size( Column(dt, "Sample") ),
Chart Col( :Weight, XBar, R ),
Get Limits(
"$SAMPLE_DATA/Quality Control/CoatingLimits.jmp"
)
);
Re: JSL を使用して IR 管理図の制限を取得する方法
Not Found in access or evaluation of 'Control Chart' , Bad Argument( {:Month Alerted, :YEAR} ), Control Chart(/*###*/Sample Label( :Month Alerted ),
Phase( :YEAR ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col(
:Grand Total,
Individual Measurement(
Test 1( 1 ),
Test 2( 1 ),
Test 5( 1 ),
Test 6( 1 ),
Phase Level(
"2019",
Sigma( 9843.52246062887 ),
Avg( 54802.5935983333 ),
LCL( 25272.0262164467 ),
UCL( 84333.1609802199 )
)
)
)
)
私の列は「Month Alerted」であり、列データの内容はこの形式 2019-04 の 12 か月であるため、サンプル ラベルを「:Month Alerted」に変更しました。
次の部分は YEAR と Phase ですが、これが私のデータと一致しないので、そこが機能しないのだと思いますか?
制限は複数の列ですが、それぞれに異なるヘッダーがあり、理想的にはすべての列ヘッダーを書きたくないです。
サイズ (500,175) も必要ですが、これがコードのどこに収まるかわかりず、データテーブルに保存します。
管理図ビルダーを使用してみましたが、制限を追加できませんでした。 ファイルを選択しましたが、その後何も起こりませんでした。 つまり、ある種のスクリプトを入手できませんでした。
ありがとうございます - スクリプトを添付しました
Re: JSL を使用して IR 管理図の制限を取得する方法ログにはどのようなエラー メッセージが記録されますか?Re: JSL を使用して IR 管理図の制限を取得する方法こんにちは、このソリューションを見つけて実装しようとしましたが、うまく機能しません。スクリプトの先頭で指定したファイルは開きますが、スクリプトの残りの部分は続行されません。 フェーズの部分と関係があるのかもしれませんが、それがどこから来たのか完全には理解できません。 助けてくれてありがとうRe: JSL を使用して IR 管理図の制限を取得する方法ジムさん、素早い返信ありがとうございます。管理限界とシグマ プロパティを設定しようとしましたが、次のエラーが発生しました。
too many arguments in access or evaluation of 'Expr' , Expr/*###*/(Column( finalDt, colNamesList[i] ) <<
Set Property(
"Control Limits",
{Individual Measurement( Avg( __avg__ ), LCL( __LCL__ ), UCL( __UCL__ ) )}
), Column( finalDt, colNamesList[i] ) << Set Property( "Sigma", __sigma__ ))問題は、同じ置換式で 2 つの異なる列プロパティを定義しようとしていたことでした。2 つの Eval に分割すると、機能します。以下を参照してください。
Current Data Table( finalDt );
Wait(0);
// Get list of columns to chart
colNameList = finalDt << get column names( continuous, string );
// Loop across all of the columns and create the charts
For( i = 2, i <= N Items( colNameList ), i++,
// If limits exist for the current column, then process
If( Try( Column( dtLimits, colNameList[i] ) << get name ) != "",
// get the limits needed
// sigma
theSigma = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_Std Dev" ))[1]];
theAvg = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_Mean" ))[1]];
theLCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_LCL" ))[1]];
theUCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_UCL" ))[1]];
Eval(
Substitute(
Expr( __process__ << Set Property("Control Limits", {Individual Measurement( Avg( __avg__ ), LCL( __LCL__ ), UCL( __UCL__ ))})),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __avg__ ), theAvg,
Expr( __LCL__ ), theLCL,
Expr( __UCL__ ), theUCL
)
);
Eval(
Substitute(
Expr( __process__ << Set Property("Sigma", __sigma__)),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __sigma__ ), theSigma,
)
);
)
);素早い対応に改めて感謝いたします。
ライ
Re: JSL を使用して IR 管理図の制限を取得する方法IR チャートの管理限界を対話的に設定し、次の JSL を使用して限界を取得する場合、
:columnname <<GET property=""></GET>
Column プロパティに保存されている構造が表示されます。
{Individual Measurement(
Avg( 62.55 ),
LCL( 51.574420384821 ),
UCL( 73.525579615179 )
)}
したがって、行う必要があるのは、制限データ テーブルから情報を読み取り、上記の構造を構築して、それを測定データ テーブルの列に渡すことだけです。以下は、管理図を実行するのではなく、管理限界を設定する点を除いて、以前のスクリプトを変更したものです。
Names Default To Here( 1 );
dt = Open( "path to data table" );
dtLimits = Open( "path to limits table" );
// Get list of columns to chart
colNameList = dt << get column names( continuous, string );
// Loop across all of the columns and create the charts
For( i = 1, i <= N Items( colNameList ), i++,
// If limits exist for the current column, then process
If( Try( Column( dtLimits, colNameList[i] ) << get name ) != "",
// get the limits needed
theAvg = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( _LimitsKey == "_Mean" ))[1]];
theLCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( _LimitsKey == "_LCL" ))[1]];
theUCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( _LimitsKey == "_UCL" ))[1]];
Eval(
Substitute(
Expr(
__Process__ << set property(
"Control Limits",
{Individual Measurement( Avg( __avg__ ), LCL( __LCL__ ), UCL( __UCL__ ) )}
)
),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __avg__ ), theAvg,
Expr( __LCL__ ), theLCL,
Expr( __UCL__ ), theUCL
)
);
)
);Re: JSL を使用して IR 管理図の制限を取得する方法こんにちは、ジムさん
あなたが言及した最初の方法にアプローチする方法を教えていただけますか? 制限テーブルから制限を読み取り、列のプロパティとして適用します。
ありがとう、
ライ
Re: JSL を使用して IR 管理図の制限を取得する方法ありがとう、ジム。 Get Rows Where( _LimitsKey == ...) セクションを少し編集する必要がありました。 コロン「:」を追加するだけで Get Rows Where( :_LimitsKey == ...) になり、すべてが機能しました。 一つ質問ですが。 スクリプトは、パラメーター管理図ごとに個別のウィンドウを生成します。 (IR 管理図ダイアログで複数のパラメータを選択したかのように) 各パラメータの管理図を積み重ねた 1 つのウィンドウを生成する方法はありますか?Re: JSL を使用して IR 管理図の制限を取得する方法これを行うには 2 つの基本的な方法があります。
- 制限テーブルからデータを読み取り、制限を列プロパティとして保存します。 次に、必要なチャートを実行します。
- グラフ化する列をループし、制限テーブルから制限値を読み取り、JSL に挿入してグラフを生成します。
これは、以下のスクリプトで使用したメソッドの 2 番目です。これは機能するスクリプトであるはずですが、実際に制限テーブルと実際のデータ テーブルがないと、何らかの不具合が発生する可能性があります。
Names Default To Here( 1 );
dt = Open( "path to data table" );
dtLimits = Open( "path to limits table" );
// Get list of columns to chart
colNameList = dt << get column names( continuous, string );
// Loop across all of the columns and create the charts
For( i = 1, i <= N Items( colNameList ), i++,
// If limits exist for the current column, then process
If( Try( Column( dtLimits, colNameList[i] ) << get name ) != "",
// get the limits needed
// sigma
theSigma = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_Std Dev" ))[1]];
theAvg = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_Mean" ))[1]];
theLCL = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_LCL" ))[1]];
theUCL = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_UCL" ))[1]];
Eval(
Substitute(
Expr(
Control Chart(
Sample Label( :WEEK ),
Phase( :YEAR ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col(
__process__,
Individual Measurement(
Test 1( 1 ),
Test 2( 1 ),
Test 5( 1 ),
Test 6( 1 ),
Phase Level(
"2019",
Sigma( __sigma__ ),
Avg( __avg__ ),
LCL( __LCL__ ),
UCL( __UCL__ )
)
)
)
)
),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __sigma__ ), theSigma,
Expr( __avg__ ), theAvg,
Expr( __LCL__ ), theLCL,
Expr( __UCL__ ), theUCL
)
);
)
);