JMPスクリプト:係数に適用される列スイッチャーこんにちは、みんな、
このスクリプトで作成された別の計算で列スイッチャーを作成しようとしています。
//Calcul du Zsigma
z_yyy = Eval( {<STRONG>:"Y1"n</STRONG>} );
z_xx = z_yyy[1] << get values;
z_nnn = Eval( {:Nombre de seringues} );
z_nn = z_nnn[1] << get values;
z_rrr = Eval( {:Numéro de lot} );
z_Proportion = E Div( z_xx, z_nn );
z_Pbar = V Sum( z_xx ) / V Sum( z_nn );
z_sigma_est = Root( z_Pbar * (1 - z_Pbar) );
z_zvalue = E Mult( ((z_Proportion - z_Pbar) / z_sigma_est), Root( z_nn ) );
z_nr = N Row( z_zvalue );
z_mRList = {0};
z_m = z_zvalue;
z_m[1, 0] = [];
z_m = z_m |/ [0];
z_mr = Abs( z_m - z_zvalue );
z_nr = N Row( z_mr );
z_mr[z_nr, 0] = [];
z_SigmaZ = Mean( z_mr ) / 1.128;
z_KSigmaZ = 3 * z_SigmaZ;
//次に、列スイッチャーを示します。
Column = z_yyy << Column Switcher( :"Y1"n,{:"Y1"n, :"Y2"n, :"Y3"n, :"Y4"n ,"Y5"n ,"Y6"n});ただし、列スイッチャーがオブジェクトに適用されていないため、メッセージエラーが発生します...
私を助けるための提案はありますか?
セバスチャン
スクリプティングRe:JMPスクリプト:係数に適用された列スイッチャー列スイッチャー機能は、GraphBuilderやBivariateなどのJMPプラットフォームの一部です。 マトリックスの機能ではありません。 データテーブルにデータ列は作成されません。
マトリックスを使用してデータテーブルを作成し、データ列を分析ロールに割り当ててプラットフォームを起動してから、列スイッチャー機能を有効にする必要があります。
Re:JMPスクリプト:係数に適用された列スイッチャーこんにちはSebastien、
列のリストをクリックしたときに、JMPでこれらの計算(変数)を更新するように思われます。 あれは正しいですか? その場合、以下のコードはこれを実現するためにcolリストボックスを使用します。最初のビットは、Y1、Y2、およびY3列を持つようにサンプルテーブルを設定することです。次に、列リストボックスを使用して新しいウィンドウを作成し、列のリストを入力します。 選択可能な列の最大数==1になるようにします。 選択が変更されると、再計算されます。グラフィックを追加できるcalcVlbというavリストボックス()があります。 次の選択に変更すると、新しい選択に置き換える前に古い選択が削除されます。 現在、例としてテキストボックスを追加するだけです。
names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
// New columns, update big class for y1, y2, y3
Local( {dt},
dt = Data Table( "Big Class" );
dt << New Column( "Y1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected
) << New Column( "Y2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected
) << New Column( "Y3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected
) << Begin Data Update;
For Each Row(
dt,
:Y1 = Random Integer( 1, 40 );
:Y2 = Random Integer( 1, 40 );
:Y3 = Random Integer( 1, 40 );
);
dt << End Data Update;
);
colList = {"Y1", "Y2", "Y3"};
new window("Calculations",
hlb = hlistbox(
clb = col list box(dt, max selected(1),
on change(
try(calcVlb << delete());
currCol = clb << get selected();
currColName = char(currCol[1]);
z_yyy = Eval(column(currCol));// Eval( {currCol} );
z_xx = z_yyy << get values;
z_nnn = Eval( {:weight} ); //change back
z_nn = z_nnn[1] << get values;
z_rrr = Eval( {:age} ); //change back
z_Proportion = E Div( z_xx, z_nn );
z_Pbar = V Sum( z_xx ) / V Sum( z_nn );
z_sigma_est = Root( z_Pbar * (1 - z_Pbar) );
z_zvalue = E Mult( ((z_Proportion - z_Pbar) / z_sigma_est), Root( z_nn ) );
z_nr = N Row( z_zvalue );
z_mRList = {0};
z_m = z_zvalue;
z_m[1, 0] = [];
z_m = z_m |/ [0];
z_mr = Abs( z_m - z_zvalue );
z_nr = N Row( z_mr );
z_mr[z_nr, 0] = [];
z_SigmaZ = Mean( z_mr ) / 1.128;
z_KSigmaZ = 3 * z_SigmaZ;
show(currCol[1]);
show(z_Proportion);
hlb << append(
calcVlb = vlistbox(
textbox("Variables updated to column " || currCol[1]);
)
)
)
)
)
);
clb << append(colList);
clb << set selected(1);
Re:JMPスクリプト:係数に適用された列スイッチャー素晴らしい! それは私のスクリプトに取り組んでいます!
しかし、その後、私は新しい問題を抱えています:\
私が作成したグラフは、計算された係数で更新されていません...
これが私の例です。
colList = {"Y1", "Y2", "Y3"};
new window("Calculations",
hlb = hlistbox(
clb = col list box(dt, max selected(1),
on change(
try(calcVlb << delete());
currCol = clb << get selected();
currColName = char(currCol[1]);
z_yyy = Eval(column(currCol));// Eval( {currCol} );
z_xx = z_yyy << get values;
z_nnn = Eval( {:Nombre de seringues} );
z_nn = z_nnn[1] << get values;
z_rrr = Eval( {:Numéro de lot} );
z_Proportion = E Div( z_xx, z_nn );
z_Pbar = V Sum( z_xx ) / V Sum( z_nn );
z_sigma_est = Root( z_Pbar * (1 - z_Pbar) );
z_zvalue = E Mult( ((z_Proportion - z_Pbar) / z_sigma_est), Root( z_nn ) );
z_nr = N Row( z_zvalue );
z_mRList = {0};
z_m = z_zvalue;
z_m[1, 0] = [];
z_m = z_m |/ [0];
z_mr = Abs( z_m - z_zvalue );
z_nr = N Row( z_mr );
z_mr[z_nr, 0] = [];
z_SigmaZ = Mean( z_mr ) / 1.128;
z_KSigmaZ = 3 * z_SigmaZ;
show(currCol[1]);
show(z_Proportion);
show(z_KSigmaZ);
hlb << append(
calcVlb = vlistbox(
textbox("Variables updated to column " || currCol[1]);
)
)
)
)
)
);
// Creation des cartes
clb << append(colList);
clb << set selected(1);z_KSigmaZは、変数ごとに必要に応じて更新されます。
しかし、それでは、このグラフを作成したいと思います。
Graph_exprall=Expr(
Graphall = Control Chart(
Sample Label( :Numéro de lot ),
Sample Size( :Nombre de seringues ),
KSigma(TBD),
Sort by Row Order( 1 ),
Chart Col( :"Y1"n, P( Test Beyond Limits( 1 ), Limits Precision( 1 ), LCL( -3 ) ) ),
SendToReport(
Dispatch(
{},
"P of Y1",
OutlineBox,
{Set Title( "p'-chart, Proportion de défaut" )}
),
Dispatch(
{"P of Y1"},
"2",
ScaleBox,
{Format( "Fixed Dec", 12, 5 ), Min( -0.00025 ), Max( 0.0025 ),
Inc( 0.00025 ), Minor Ticks( 1 )}
),
Dispatch(
{"P of Y1"},
"1",
ScaleBox,
{Min( 0.5 ), Inc( 1 ), Minor Ticks( 0 )}
),
Dispatch(
{"P of Y1"},
"",
AxisBox,
{Add Axis Label( "Taux de défauts (srg)" )}
)));
ColumnSwitcherObject = graphall << Column Switcher( :"Y1"n,{:"Y2"n, :"Y3"n, :"Y4"n, :"Y5"n ,"Y6"n ,"Y7"n});
);
// On affecte le SigmaZ à la carte de controle
SubstituteInto(Graph_exprall, Expr(TBD), z_KSigmaZ);
Graph_exprall;計算された新しいz_KSigmaZ係数でグラフを更新する方法はありますか?
管理図ウィンドウ内でz_KSigmaZ係数と変数選択を設定する方がよいと思います。
それを手伝ってくれませんか。
どうもありがとう。
Re:JMPスクリプト:係数に適用された列スイッチャー申し訳ありませんが、これはあまり役に立たない場合があります。 データセットが管理図に実際には適していないため、管理図コードにエラーがあり、適切なデータセットを使用してデバッグする時間がありませんでした。 ただし、これを使用して管理図コードをデバッグできる場合があります。管理図の代わりに配布プラットフォームでテストしたところ、問題なく動作しました。「onchange()」コードを含む列リストボックスが列スイッチャーの代わりになるため、管理図コードに追加する必要はありません。 列リストボックスから新しいパラメータ(列)を選択するたびに、削除されて再実行されます。
あなたもプロットが欲しいとは思いませんでした。 その場合、カラムスイッチャーを使用する方が適切だった可能性があります。 選択が変更されたことを傍受する方法があり、コードを実行して変数を更新し、再プロットすることができます。 しかし、このcol list box()アプローチも問題なく機能するはずです。
names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
// New columns, update big class for y1, y2, y3
Local( {dt},
dt = Data Table( "Big Class" );
dt << New Column( "Y1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected
) << New Column( "Y2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected
) << New Column( "Y3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected
) << Begin Data Update;
For Each Row(
dt,
:Y1 = Random Integer( 1, 40 );
:Y2 = Random Integer( 1, 40 );
:Y3 = Random Integer( 1, 40 );
);
dt << End Data Update;
);
colList = {"Y1", "Y2", "Y3"};
new window("Calculations",
hlb = hlistbox(
clb = col list box(dt, max selected(1),
on change(
try(calcVlb << delete());
currCol = clb << get selected();
currColName = char(currCol[1]);
z_yyy = Eval(column(currCol));// Eval( {currCol} );
z_xx = z_yyy << get values;
z_nnn = Eval( {:weight} ); //change back
z_nn = z_nnn[1] << get values;
z_rrr = Eval( {:age} ); //change back
z_Proportion = E Div( z_xx, z_nn );
z_Pbar = V Sum( z_xx ) / V Sum( z_nn );
z_sigma_est = Root( z_Pbar * (1 - z_Pbar) );
z_zvalue = E Mult( ((z_Proportion - z_Pbar) / z_sigma_est), Root( z_nn ) );
z_nr = N Row( z_zvalue );
z_mRList = {0};
z_m = z_zvalue;
z_m[1, 0] = [];
z_m = z_m |/ [0];
z_mr = Abs( z_m - z_zvalue );
z_nr = N Row( z_mr );
z_mr[z_nr, 0] = [];
z_SigmaZ = Mean( z_mr ) / 1.128;
z_KSigmaZ = 3 * z_SigmaZ;
show(currCol[1]);
show(z_Proportion);
hlb << append(
calcVlb = vlistbox(
textbox("Variables updated to column " || currCol[1]);
)
);
calcVlb << append(
Distribution(
Stack( 1 ),
Continuous Distribution(
Column( column(currCol[1])),
Horizontal Layout( 1 ),
Vertical( 0 ),
PpK Capability Labeling( 0 ),
Customize Summary Statistics(
Std Err Mean( 0 ),
Upper Mean Confidence Interval( 0 ),
Lower Mean Confidence Interval( 0 ),
N Missing( 1 ),
Range( 1 )
)
)
);
);
//Graph_exprall=Expr(
/*
hlb << append(
Graphall = Control Chart(
Sample Label( :weight ),
Sample Size( :age ),
KSigma(z_KSigmaZ),
Sort by Row Order( 1 ),
Chart Col( column(currCol[1]), P( Test Beyond Limits( 1 ), Limits Precision( 1 ), LCL( -3 ) ) ),
SendToReport(
Dispatch(
{},
"P of Y1",
OutlineBox,
{Set Title( "p'-chart, Proportion de défaut" )}
),
Dispatch(
{"P of Y1"},
"2",
ScaleBox,
{Format( "Fixed Dec", 12, 5 ), Min( -0.00025 ), Max( 0.0025 ),
Inc( 0.00025 ), Minor Ticks( 1 )}
),
Dispatch(
{"P of Y1"},
"1",
ScaleBox,
{Min( 0.5 ), Inc( 1 ), Minor Ticks( 0 )}
),
Dispatch(
{"P of Y1"},
"",
AxisBox,
{Add Axis Label( "Taux de défauts (srg)" )}
)));
//ColumnSwitcherObject = graphall << Column Switcher( :"Y1"n,{:"Y2"n, :"Y3"n, :"Y4"n, :"Y5"n ,"Y6"n ,"Y7"n});
// );
// On affecte le SigmaZ à la carte de controle
// SubstituteInto(Graph_exprall, Expr(TBD), z_KSigmaZ);
// Graph_exprall;
);
*/
)
)
)
);
clb << append(colList);
clb << set selected(1);
Re:JMPスクリプト:係数に適用された列スイッチャーやあ、
あなたの答えをありがとう、それは私を大いに助けます。
そして、私はもうすぐそこにいると思います。
動作しないものは1つだけです。作成されたグラフでは、z_KSigmaZが更新されません...
これが私のコードです:
colList = {"Y1", "Y2", "Y3"};
new window("Calculations",
hlb = hlistbox(
clb = col list box(dt, max selected(1),
on change(
try(calcVlb << delete());
currCol = clb << get selected();
currColName = char(currCol[1]);
z_yyy = Eval(column(currCol));// Eval( {currCol} );
z_xx = z_yyy << get values;
z_nnn = Eval( {:Nombre de seringues} ); //change back
z_nn = z_nnn[1] << get values;
z_rrr = Eval( {:Numéro de lot} ); //change back
z_Proportion = E Div( z_xx, z_nn );
z_Pbar = V Sum( z_xx ) / V Sum( z_nn );
z_sigma_est = Root( z_Pbar * (1 - z_Pbar) );
z_zvalue = E Mult( ((z_Proportion - z_Pbar) / z_sigma_est), Root( z_nn ) );
z_nr = N Row( z_zvalue );
z_mRList = {0};
z_m = z_zvalue;
z_m[1, 0] = [];
z_m = z_m |/ [0];
z_mr = Abs( z_m - z_zvalue );
z_nr = N Row( z_mr );
z_mr[z_nr, 0] = [];
z_SigmaZ = Mean( z_mr ) / 1.128;
z_KSigmaZ = 3 * z_SigmaZ;
show(currCol[1]);
show(z_Proportion);
hlb << append(
calcVlb = vlistbox(
textbox("Variables updated to column " || currCol[1]);
)
);
/*calcVlb << append(
Distribution(
Stack( 1 ),
Continuous Distribution(
Column( column(currCol[1])),
Horizontal Layout( 1 ),
Vertical( 0 ),
PpK Capability Labeling( 0 ),
Customize Summary Statistics(
Std Err Mean( 0 ),
Upper Mean Confidence Interval( 0 ),
Lower Mean Confidence Interval( 0 ),
N Missing( 1 ),
Range( 1 )
)
)
);
);*/
Graph_exprall=Expr(
hlb << append(
Graphall = Control Chart(
Sample Label( :Numéro de lot ),
Sample Size( :Nombre de seringues ),
KSigma(z_KSigmaZ),
Sort by Row Order( 1 ),
Chart Col( column(currCol[1]), P( Test Beyond Limits( 1 ), Limits Precision( 1 )) ),
SendToReport(
Dispatch(
{},
"P of Y1",
OutlineBox,
{Set Title( "p'-chart, Proportion de défaut" )}
),
Dispatch(
{"P of Y1"},
"2",
ScaleBox,
{Format( "Fixed Dec", 12, 5 ), Inc( 0.00025 ), Minor Ticks( 1 )}
),
Dispatch(
{"P of Y1"},
"1",
ScaleBox,
{Min( 0.5 ), Inc( 1 ), Minor Ticks( 0 )}
),
Dispatch(
{"P of Y1"},
"",
AxisBox,
{Add Axis Label( "Taux de défauts (srg)" )}
)));
ColumnSwitcherObject = graphall << Column Switcher( :"Y1"n,{:"Y1"n, :"Y2"n, :"Y3"n});
);
);
)
)
)
);
clb << append(colList);
clb << set selected(1);
SubstituteInto(Graph_exprall, Expr(TBD), z_KSigmaZ);
Graph_exprall;z_KSigmaZは適切に計算されていますが、作成されたグラフには適用されません...
私はそれがから来ていると思いますSubstituteInto(Graph_exprall、Expr(TBD)、z_KSigmaZ);
それを手伝ってくれませんか。
どうもありがとう。
Re:JMPスクリプト:係数に適用された列スイッチャーデバッグ用のデータセットが設定されていないためわかりませんが、式のコードを変更し、TBDを削除して、変数自体に置き換えました。 未定に戻してみてください。
KSigma(z_KSigmaZ),
Re:JMPスクリプト:係数に適用された列スイッチャー私はこの表現で試しました:
KSigma(TBD)、
ただし、colListが選択されているグラフでは、KSigmaは更新されません。
ただし、グラフは列(スイッチャー)が選択された状態で更新されます。
私を助けるためのアイデアはありますか?
添付されたデータセットの例があります。