将GrubbsOutlierTest2集成到多变量数据表中之前说过,我正在处理一组使用SQL脚本连接的复杂数据表。在这个社区的帮助下,我设法创建了一个基于“应用程序”的脚本,该脚本根据用户选择的条件创建绘图和分布。
问题的最后一部分是处理那些讨厌的异常值。像往常一样,我的问题在于循环遍历标识异常值的测试条件,然后从数据集中删除它们。我知道删除它们可能会有风险,但鉴于我们的复杂测试,我们的部件分布严密或灾难性地失败。如果g> g0去寻找异常值并删除它们,我试图恭维。
附:主表和主表中的3个子集。
我找到了这个线可以在一个列中完成它但是又如何循环通过一切?
我有很多脚本循环这些条件,但我无法弄清楚正确的组合。
再一次感谢你的帮助。
Re:将GrubbsOutlierTest2集成到多变量数据表中更新:我设法让GrubbsOutlier完成工作。我可以采取一个测试条件,并得到我需要的东西。我抓住了一个For循环来捕获两个测试条件但是它挂了。
您可以针对示例数据_ 1晶圆(test_3).jmp运行此脚本,并查看我正在寻找的输出。我很感激添加第二个Trmode的任何帮助,甚至在具有多个晶圆样本数据的数据集上执行此操作_ 6个晶圆(test_3).jmp
解决此问题后,我将尝试执行If(g> g0)Loc(<异常值>),然后从数据集中删除它们。
谢谢
dt = Current Data Table();
dtsum = dt << Summary(
Group( :channel, :trmode ),
Interquartile Range( :Output ),
Freq( "None" ),
Weight( "None" ),
// invisible
);
Current Data Table( dt );<BR />
// <INSERT for="" loop="" here="">
dist = dt << Distribution(
Y( Column( "Output" )),
By( Column( "channel" ) ),
Normal Quantille Plot( 1 ),
Fit Distribution(
Normal(
Goodness of FIt( 1 )
)
),<BR />// Added a For() Loop located at the botton of the screen, the script hangs up<BR />// Where( dt :trmode == mode )
Where( dt :trmode == "Tx" )<BR /><BR /> );
distr = dist << Report;
bCol = Column( "channel ");
Summarize( group = By( bCol ));
yy = Column( "Output" ) << Get As Matrix;
exRows = dt << Get Excluded Rows();
yy[exRows] = .;
For( i = 1, i <= N Items( group ), i++,
groupName = Trim( Word( 2, distr[i][OutlineBox(1)] << Get Title, "=" ) );
getRows = dt << Get Rows Where( bCol[] == groupName );
yVal = yy[getRows];
yVal[Loc( Is Missing( yVal ) )] = [];
n = N Row( yVal );
a = 0.05;
t0Sqr = t Quantile( 1 - a/(2*n), n-2 )^2;
g = Maximum( Abs( yVal - Mean( yVal ) ) ) / Std Dev( yVal );
g0 = ((n-1)/Sqrt(n)) * Sqrt( t0Sqr / (n - 2 + t0Sqr) );
distr[i][Outline Box(2)] << Append(
Outline Box( "Grubbs' Outlier Test",
Table Box(
String Col Box( "Statistic", {"G", "G("||Char(a)||")"} ),
Number Col Box( "Estimate", Matrix( {g, g0} ) )
),
Text Box(
If( g>g0,
"Outlier detected",
"No outlier detected"
)
)
)
);
);
// For Loop I was trying to use
// For( i = 1, i <= N Rows( dtsum ), i++,
// mode = dtsum:trmode[i];
// < Insert Script From Above >
// );
</INSERT>
Re:将GrubbsOutlierTest2集成到多变量数据表中是的,先生,但我想以自动形式使用它来解决g> g0。然后使用每个测试的计算By:channel定位异常值,然后将它们从数据集中排除,而不是手动执行。
Re:将GrubbsOutlierTest2集成到多变量数据表中Grubb异常值测试的脚本可以在By分析角色中使用分组变量。
Re:将GrubbsOutlierTest2集成到多变量数据表中我很抱歉没有清楚地传达这一点。test_1包含3个不同的set_id {7000,7100,7200}。
set_id 7000有1个通道(开关)+ 2个电源= 2个测试输出
set_id 7100有16个通道+2个电源= 32个测试输出
set_id 7200有16个通道+2个电源= 32个测试输出
总计= 66
我领先于自己并忘记了set_id:7000只是两个条件。所有3项测试= 105
我也一直在考虑并需要重写原帖。我认为将每个测试(_1,_2,_3)的子集更容易,然后执行我需要对distriubtions做的事情。主表对我的图形图很有用。子集将是我们筛选的测试和测试条件......
Re:将GrubbsOutlierTest2集成到多变量数据表中让我们专注于你的桌子下面是#1,而且只是'test_1'。我想你是说你要考虑每个3 * 2 * 16 = 96'循环条件'来定义一个组,并在每个组中寻找异常值。这是对的吗?但附表显示#1有105个这样的组,而不是96个?