キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
言語を選択 翻訳バーを非表示
最初に公開されたスレッドを表示

外れ値を詳しく調べる

Yngeinstn
Level IV

Explore Outliers プラットフォームに偶然出会ったのですが、控えめに言っても非常に目がくらんでいます。 私の質問は、ロバストフィット外れ値の下の除外行にあります。 私は実際に、このプラットフォーム内でスクリプトがどのように動作するか、具体的にはどの行を除外するかを決定する方法を確認しようとしているだけです。 適切なスクリーニング制限でテーブルを分割した後、最大 200 以上の列があります。

 

[スクリプトをスクリプト ウィンドウに保存] を実行できますが、マクロ形式でスクリプトを記述する方法を示しているだけで、実際には行関数ではありません。


ありがとう

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

1 件の受理された解決策

受理された解決策
ian_jmp
Level X

Re: 外れ値を詳しく調べる

これまでに「外れ値の探索」のスクリプトを作成しようとしたことがないので、もっと良い方法があるかもしれません。以下のコードは、私が試す時間があった唯一のケースで機能したので、それを始めるのに役立つかもしれません。

NamesDefaultToHere(1);

// Example data
dt1 = Open( "$SAMPLE_DATA/Probe.jmp" );

// Copy the data to a new table
dt2 = Eval(dt1 << getScript);
dt2 << setName((dt1 << getName||" Screened"));

// List of columns to screen
colsToScreen = {:VDP_M1, :VDP_M2, :VDP_NBASE};

// Screen for outliers using your favourite method
eo = dt2 << Explore Outliers(Y(Eval(colsToScreen)), Quantile Range Outliers( 1 ), Show Only Columns With Outliers(1), Invisible);

// Using the report, find the columns that have outliers
eoRep = Report(eo);
table = eoRep[TableBox(1)];
colList = eoRep[StringColBox(1)];
// Loop over these columns . . .
nCols = NItems(colList << get);
for(c=1, c<=nCols, c++,
 // Select this column (described by a row)
 CMD = Expr( table << setSelectedRows({colTBD}) );
 SubstituteInto(CMD, Expr(colTBD), Eval(c));
 CMD;
 // Update dt2 for this column: Cells that were considered outliers are coloured red
 eo << ColorCells(1);
 eo << ChangeToMissing(1);
 );
eoRep << closeWindow;

セルを欠損値に設定するのではなく、欠損値コードの使用を検討できます。

9件の返信9
ian_jmp
Level X

Re: 外れ値を詳しく調べる

それにかんする '具体的には、どの行を除外するかを決定する方法について説明します。 』をご覧になりましたか?必要な助けページ?

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Yngeinstn
Level IV

Re: 外れ値を詳しく調べる

返信いただきありがとうございます。 あなたが参照していたリンクを見つけたので、すべての情報を調べて、データに使用する最適な方法を決定しています。

 

最初の投稿では具体的な内容を述べられなかったことをお詫びします。 私がやりたいのは、Explore Outliers プラットフォームを自動化して、作成中の多数のプロット関数にすることです。 たとえば、データテーブルをロードし、列を分割し、外れ値の探索を実行すると、明らかに外れ値とみなされる行を選択して除外できます。 行ごとに除外されていることに気付き、エラーが表示されます。 次の列に進むには、何らかの方法でこれを無視できるようにする必要があります。 データ テーブルを添付し、スクリプトの実行を論理的に確認する方法を示す JSL を含めました。 現時点ではまだ機能していないため、ここにいます。一部のテストには 300 以上の分割 ( :SPEC_COL_NAMES ) があります。

 

前もって感謝します。

 

----- ループの開始

----- 列[1]で外れ値の探索を実行します。

----- 行を除外

----- プロットの配布

----- 行の状態をクリアする

----- 列[2]で外れ値の探索を実行します。

----- 行を除外

----- プロットの配布

----- 行の状態をクリアする

-----cols[i] の後でループを終了

 

 

 

 dt = Current Data Table();
 
// Split Data Table by SPEC_COL_NAMES :  
// This is used for a variety of things, specifically Spec Limits and Range Checks

 dtsplitmeas = dt << Split(
  Invisible,
  Split By( :SPEC_COL_NAMES ),
  Split( :Output_1 ),
  Group( :wafer_number, :rownum, :colnum, :subrow, :subcol, :RowCol ),
  Remaining Columns( Drop All )
 );
 
 cols = dtsplitmeas << Get Column Names( Numeric );
 
 dtsum = dt << Summary(
  Invisible,
  Group( :wafer_number )
 );
 
 jjrn1 = New Window( "Distribution - Output_1 ", << Journal );
 
// I am taking a shot at the syntax and the way I think it should be coded. 
// By all means, correct me if i am wrong and make any modifications you see fit
// I don't actually know how to address the different wafers #'s and the
// SPEC_COL_NAMES at the same time. This is why i figured 2 For() loops.
 
 For( i = 1, i <= N Items( cols ), i++,
  For( j = 1, j <= N Items( dtsum ), j++,
   test = cols[i];
   wfr = dtsum:wafer_number[j];

   eo = Explore Outliers(
    SendToByGroup( Bygroup Default ),
    Y( As Column( test ) ),
    Robust Fit Outliers,
    Where( :wafer_number == wfr )
   );
   
//------------------------------------------------------------ -/    
// < Insert Script to Exclude Rows for col[1] in dtsplitmeas>  /
// This is what my original question was                 /
// referring to                /
//----------------------------------------------------------/

// Step into Control Chart, Control Chart Builder, Distributions, Fit Y by X plots
// Control Chart Builder is just an example
    
   gb = Control Chart Builder(
    Size( 847, 990 ),
    Show Control Panel( 0 ),
    Variables( Y( As Column( test ) ) ),
    Chart( Position( 1 ), Limits( Sigma( "Levey Jennings" ) ) ),
    Chart( Position( 2 ), Limits( Sigma( "Moving Range" ) ) )
   );

// Create Control Chart for all SPEC_COL_NAMES place it into a report / journal
 
   (gb << top Report)[Text Edit Box( 1 )] << delete;  //delete the where statement
   Report( gb )[Outline Box( 1 )] << Set Title( cols[i] );
   
   jjrn2 << Append( Report( gb ) );
   gb << Close Window;
 
// Clear Row States because when you exclude a row for a given column, it extends
// to all other colums on that row
   
   dtsplitmeas << Clear Row States();
   
// Rise and Repeat for all SPEC_COL_NAMES
   
  );
 );

 

 

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

ian_jmp
Level X

Re: 外れ値を詳しく調べる

これまでに「外れ値の探索」のスクリプトを作成しようとしたことがないので、もっと良い方法があるかもしれません。以下のコードは、私が試す時間があった唯一のケースで機能したので、それを始めるのに役立つかもしれません。

NamesDefaultToHere(1);

// Example data
dt1 = Open( "$SAMPLE_DATA/Probe.jmp" );

// Copy the data to a new table
dt2 = Eval(dt1 << getScript);
dt2 << setName((dt1 << getName||" Screened"));

// List of columns to screen
colsToScreen = {:VDP_M1, :VDP_M2, :VDP_NBASE};

// Screen for outliers using your favourite method
eo = dt2 << Explore Outliers(Y(Eval(colsToScreen)), Quantile Range Outliers( 1 ), Show Only Columns With Outliers(1), Invisible);

// Using the report, find the columns that have outliers
eoRep = Report(eo);
table = eoRep[TableBox(1)];
colList = eoRep[StringColBox(1)];
// Loop over these columns . . .
nCols = NItems(colList << get);
for(c=1, c<=nCols, c++,
 // Select this column (described by a row)
 CMD = Expr( table << setSelectedRows({colTBD}) );
 SubstituteInto(CMD, Expr(colTBD), Eval(c));
 CMD;
 // Update dt2 for this column: Cells that were considered outliers are coloured red
 eo << ColorCells(1);
 eo << ChangeToMissing(1);
 );
eoRep << closeWindow;

セルを欠損値に設定するのではなく、欠損値コードの使用を検討できます。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Yngeinstn
Level IV

Re: 外れ値を詳しく調べる

これにはいくら感謝してもしきれません... これは信じられない! 私がこのすべてのデータのプロットを担当して以来、異常値の問題は(ウェーハマップの作成と合わせて)私の生きがいとなってきました。 txnelson 氏は、スペック制限がある場合にも比較できる範囲チェック方法について教えてくれましたが、チェックを使用できない場所に生データをプロットするだけで私には大変でした。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Yngeinstn
Level IV

Re: 外れ値を詳しく調べる

@ian_jmp

このエラー メッセージが表示されるのを手伝っていただけますか。 このスクリプトを手動で実行すると、問題なく動作し、エラーはスローされません (ログのスクリーンショットを参照)。ただし、これを式で使用して自動的に実行しようとすると、次のエラー メッセージが表示され、さらにその後のエラー メッセージが表示されます (値が欠落値に置き換えられたことを示すログのすべての行。 そこに Wait() を入れようとしましたが、役に立ちませんでした。

 

ありがとうデイビッド

エラー undefinedundefined

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

ian_jmp
Level X

Re: 外れ値を詳しく調べる

次のように入れてみてください:

  Batch Interactive( 1 ); 

コードの先頭に。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

az3964
Level I

Re: 外れ値の探索について

私は JMP を初めて使用します。

下のコードの 3 つの列は数値のようです。各列の外れ値画面です。

colsToScreen = {:VDP_M1, :VDP_M2, :VDP_NBASE};

スクリプトは 4 つの列を持つデータでは機能しません。

colsToScreen = {:テスト名、:温度、:VDD、:測定値}

どこ:

テスト名: test1、test2、test3、....など。

温度: -40℃、25℃、85℃、125℃

VDD: 1.8V、2.0V、2.5V、3.0V


テスト名+温度+VDDの各組み合わせの測定値列に対してOUTLIERSを実行したい。

PS 「GROUP」の使用方法についてここで多くの投稿を読みましたが、成功しませんでした。


どのような助けでも感謝します。

ありがとう。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

txnelson
Super User

Re: 外れ値の探索について

なぜスクリプトを書くのですか?

分析=>スクリーニング=>外れ値の調査

対話的に実行します。スクリプトは必要ありません。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

txnelson
Super User

Re: 外れ値の探索について

スクリプトはアルゴリズムを提供しません。スクリプトは Explore Outliers プラットフォームを呼び出すだけです。ヘルプ システムにアクセスして、Explore Outliers プラットフォームの統計詳細を確認する必要があります。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。