编写 Gauge R&R 问题脚本如下 JMP 脚本用于 Gauge R&R 5 sigma
但在我的可变性图表中,我总是能在 Gauge RR 5 sigma 上成功设置第一个项目。
我不明白,为什么我不能得到 5 sigma 上的所有“y 列表”项目。
任何人都可以帮助我吗?
rezults <SPAN class="token operator">=</SPAN> <SPAN class="token function">Column Dialog</SPAN><SPAN class="token punctuation">(</SPAN>
title<SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Select Columns For Gauge R&R Analysis"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
yycol <SPAN class="token operator">=</SPAN> ColList<SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Y, Response"</SPAN><SPAN class="token punctuation">,</SPAN> Mincol<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> DataType<SPAN class="token punctuation">(</SPAN> Numeric <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
xxcol <SPAN class="token operator">=</SPAN> ColList<SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"X, Factor"</SPAN><SPAN class="token punctuation">,</SPAN> Mincol<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> Modeling <SPAN class="token function">Type</SPAN><SPAN class="token punctuation">(</SPAN> Nominal <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
bbycol <SPAN class="token operator">=</SPAN> ColList<SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"By"</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
ylist <SPAN class="token operator">=</SPAN> rezults<SPAN class="token punctuation">[</SPAN><SPAN class="token string">"yycol"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
xlist <SPAN class="token operator">=</SPAN> rezults<SPAN class="token punctuation">[</SPAN><SPAN class="token string">"xxcol"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
bbylist <SPAN class="token operator">=</SPAN> rezults<SPAN class="token punctuation">[</SPAN><SPAN class="token string">"bbycol"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
N <SPAN class="token operator">=</SPAN> <SPAN class="token function">N Items</SPAN><SPAN class="token punctuation">(</SPAN> ylist <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN> i <SPAN class="token operator">=</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> i <SPAN class="token operator"><=</SPAN> N<SPAN class="token punctuation">,</SPAN> i<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
s <SPAN class="token operator">=</SPAN> dt <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Get Property</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Spec Limits"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
usl <SPAN class="token operator">=</SPAN> s<SPAN class="token punctuation">[</SPAN><SPAN class="token string">"USL"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
lsl <SPAN class="token operator">=</SPAN> s<SPAN class="token punctuation">[</SPAN><SPAN class="token string">"LSL"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
obj <SPAN class="token operator">=</SPAN> Variability Chart<SPAN class="token punctuation">(</SPAN>
Y<SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Eval</SPAN><SPAN class="token punctuation">(</SPAN> ylist <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
X<SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Eval</SPAN><SPAN class="token punctuation">(</SPAN> xlist <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
By<SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Eval</SPAN><SPAN class="token punctuation">(</SPAN> bbylist <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Model<SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Main Effect"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Max Iter<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">100</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Conv Limit<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0.00000001</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Number Integration Abscissas<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">128</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Number Function Evals<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">65536</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Analysis <SPAN class="token function">Type</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Choose best analysis (EMS REML)"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Historical <SPAN class="token function">Mean</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Historical Sigma<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token comment">//Process Variation( 0 ),</SPAN>
Std Dev Chart<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
obj <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Gauge RR</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token number">5</SPAN><SPAN class="token punctuation">,</SPAN> usl <SPAN class="token operator">-</SPAN> lsl<SPAN class="token punctuation">,</SPAN> lsl<SPAN class="token punctuation">,</SPAN> usl <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
回复:编写一个 Gauge R&R 问题的脚本惊人的,它的工作原理。
感谢您的分享。
回复:编写一个 Gauge R&R 问题的脚本忽略此回复的原始版本。 我要用“这是在我早上喝咖啡的借口之前”。
尝试这个。一些更正。 s、lsl、usl 在以前的帖子中没有存储在列表中,所以这些值是陈旧的。固定在这里。 我无意中使用了“N”而不是 i 作为迭代参数。 固定在这里。 一定要仔细检查这是在做你想做的。
//clear log();
namespace("here")<<REMOVE></REMOVE>
回复:编写一个 Gauge R&R 问题的脚本感谢您的回复,
但我仍然在这里遇到问题
在我运行脚本之后我得到了可变性仪表图然后
Gauge R&R 上的第一项 => 可以在 VC 图表中显示 5K。它是正确的
但 Gauge R&R 结果的第二项 => 它在 VC 图表中显示“6K”。
我想在 Guage R&R 中将所有 ylist 项目计算为 5K
@mikedriscoll你有什么更好的主意吗?
回复:编写一个 Gauge R&R 问题的脚本这是重写。 如果没有其他原因,调用功能会使调试变得更容易。
编辑:不要使用这个版本。 s、lsl 和 usl 变量过时存在问题,它也没有解决 OP 的问题。
//clear log();
namespace("here")<<remove(namespace("here")<<getkeys);
names default to here(1);
dt = current data table();
showErrorMsg = expr(New Window("Must select at least one column...",<<Modal, textBox("Must select at least one column in Y and X roles. "),
ButtonBox("OK")));
//grrFunction = Function({ylist, xlist, bbylist}, // pass GUI variables to locals here, downside is can't hover to observe values
grrFunction = Function({x}, // x not used here, just using the variables from the GUI and re-assinging to existing vars
ylist = yParamNames;
xlist = xParamNames;
bbylist = byParamNames;
N = N Items( ylist );
For( i = 1, i <= N, i++,
s = column(dt, ylist[i]) << Get Property( "Spec Limits" );
usl = s["USL"];
lsl = s["LSL"];
);
obj = Variability Chart(
Y( Eval( ylist ) ),
X( Eval( xlist ) ),
By( Eval( bbylist ) ),
Model( "Main Effect" ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML)" ),
Historical Mean( 0 ),
Historical Sigma( 0 ),
//Process Variation( 0 ),
Std Dev Chart( 0 ),
);
obj << Gauge RR( 5, usl - lsl, lsl, usl );
);
nw = new window("Select Columns For Gauge R&R Analysis",
hlistbox( // horizontal list box
cflObj = filter col selector(data table(dt << get name()), nlines(20)), //first item in hlist box
panelbox( "Cast selected columns into roles", // second item
lineupbox(ncol(2),
bb_y = buttonbox("Y, Response",
newParams = cflObj << get selected;
yColObj << append(newParams);
),
yColObj = col list box(data table(dt << get name()),numeric,nlines(5), min items(1)),
bb_x = buttonbox("X, Factor",
newParams = cflObj << get selected;
xColObj << append(newParams);
),
xColObj = col list box(data table(dt << get name()),nlines(3), min items(1), <<Set Analysis Type(Nominal)),
bb_by = buttonbox("By",
newParams = cflObj << get selected;
byColObj << append(newParams);
),
byColObj = col list box(data table(dt << get name()),nlines(3))
)// end lineupbox
)// end roles panel box
,
panelbox("Actions", // final item
vlistbox(
button box("Ok",
yParamNames = yColObj << get items;
xParamNames = xColObj << get items;
byParamNames = byColObj << get items;
if ( nitems(yParamNames) == 0 | nitems(xParamNames) == 0 ,
showErrorMsg
,
//else
new namespace("recall_grr");
recall_grr:yParamNames_rcl = yColObj << get items;
recall_grr:xParamNames_rcl = xColObj << get items;
recall_grr:byParamNames_rcl = byColObj << get items;
nw << close window;
//grrFunction(yParamNames, xParamNames, byParamNames) //pass to local
grrFunction(1) // use these 3 (above) vars directly without passing
);
),
button box("Remove", yColObj << remove selected; xColObj << remove selected; byColObj << remove selected),
button box("Cancel", nw << close window),
spacerbox(Size(1,80)),
button box("Recall",
try(yColObj << append(recall_grr:yParamNames_rcl));
try(xColObj << append(recall_grr:xParamNames_rcl));
try(byColObj << append(recall_grr:byParamNames_rcl));
)
)
)//end actions panel box
) // end hlistbox
);//end new window nw
回复:编写一个 Gauge R&R 问题的脚本你没有定义 dt 但我假设你已经单独定义了它。 但即便如此,您还是在循环中使用了这个命令:
s <SPAN class="token operator">=</SPAN> dt <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Get Property</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Spec Limits"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
这不起作用(假设 dt 是数据表),因为规格限制是列的属性,而不是数据表。 请参阅下文了解如何引用列和访问规格限制属性。 我添加了一个 dt = current data table() 行。
此外,column dialog() 命令已被弃用(我认为)并被新的 window() 命令取代,该命令使用一整套显示框,包括“filter col selector()”、“col list box()”和“按钮框()”。 如果你刚刚起步,你可能会考虑转换。 由您决定,但只需考虑切换与创建大量具有弃用功能的脚本。
dt = current data table();
rezults = Column Dialog(
title( "Select Columns For Gauge R&R Analysis" ),
yycol = ColList( "Y, Response", Mincol( 1 ), DataType( Numeric ) ),
xxcol = ColList( "X, Factor", Mincol( 1 ), Modeling Type( Nominal ) ),
bbycol = ColList( "By" )
);
ylist = rezults["yycol"];
xlist = rezults["xxcol"];
bbylist = rezults["bbycol"];
N = N Items( ylist );
For( i = 1, i <= N, i++,
s = column(dt, ylist[N]) << Get Property( "Spec Limits" );
usl = s["USL"];
lsl = s["LSL"];
);
obj = Variability Chart(
Y( Eval( ylist ) ),
X( Eval( xlist ) ),
By( Eval( bbylist ) ),
Model( "Main Effect" ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML)" ),
Historical Mean( 0 ),
Historical Sigma( 0 ),
//Process Variation( 0 ),
Std Dev Chart( 0 ),
);
obj << Gauge RR( 5, usl - lsl, lsl, usl );