GrubbsOutlierTest2の多変数データテーブルへの統合前述のとおり、私はSQLスクリプトを使用して結合された複雑なデータテーブルのセットを扱っています。このコミュニティの助けを借りて、私はユーザが選択した条件に基づいてプロットと分布を作成する「アプリケーション」ベースのスクリプトを作成することに成功しました。
問題の最後の部分は、これらの厄介な異常値を扱うことです。いつものように、私の問題は外れ値を識別してデータセットからそれらを取り除くテスト条件をループすることにあります。それらを削除するのは危険である可能性があることを私は理解していますが、私たちの複雑なテストを考えると私たちのパーツは狭い分布にあるか壊滅的に失敗します。g> g0が外れ値を見つけてそれらを削除するならば、私は暗示しようとしています。
添付:メインテーブルとメインテーブルから3つのサブセット。
私はこれを見つけました糸それは単一の列でそれをすることができましたが、繰り返しますが、1つはすべてをすべてループしますか?
私はこれらの条件のいくつかをループするかなりの数のスクリプトを持っていますが、私は正しい組み合わせを理解することができません。
もう一度助けてくれてありがとう。
再:GrubbsOutlierTest2の多変数データテーブルへの統合更新日:私はGrubbsOutlierにある種の仕事をさせました。私は1つのテスト条件を取り、必要なものを手に入れることができます。私は2つのテスト条件をとらえるためにFor Loopをつかみました、しかしそれはハングします。
あなたは、サンプルデータ_ 1ウェハ(test_3).jmpに対してこのスクリプトを実行して、私が探している出力を見ることができます.. 2nd 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>
再:GrubbsOutlierTest2の多変数データテーブルへの統合はい、しかし私はそれをg> g0を含む自動化された形式で使いたいのです。それから各テストのためのその計算で:Byチャンネルは外れ値を見つけ、そしてそれを手動でする代わりにデータセットからそれらを除外します。
再:GrubbsOutlierTest2の多変数データテーブルへの統合Grubbの異常値テスト用のスクリプトは、By analysisロールでグループ化変数を使用できます。
再: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がちょうど2つの条件であることを忘れていました。3テストすべて= 105
私はまたそれにある考えを与えて、元の記事を書き直す必要があります。各テスト(_1、_2、_3)をサブセット化してから、配布のために必要なことを実行するほうが簡単になると思います。メインテーブルは私のグラフプロットに適しています。サブセットは我々がスクリーニングするテストとテスト条件になるでしょう...
再:GrubbsOutlierTest2の多変数データテーブルへの統合あなたのテーブルに集中しましょう以下の#1、およびその中の「test_1」だけです。グループを定義し、これらの各グループ内で外れ値を探すために、3 * 2 * 16 = 96の各「ループ条件」を検討したいと言っていると思います。それは正しいですか。しかし添付の表は、#1が96ではなく105のそのようなグループを持つことを示していますか?