Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?ブラケットがあるべき位置にあることを確認しましたか?


Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?@jthi 、 右。
コードを修正しました
...そして、さまざまなケースでエイリアンのリストが私のシステム上でどのように表示されるかをスクリーンショットに追加しました。
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?最終的に何をしたいかに応じて、いくつかの回避策があります。
- :alien = 1 で「空白」行を追加します (エイリアンが 1 であることを除き、他の値はすべて欠落しています)
- リスト ボックス (またはその他) を使用してカスタム フィルターを作成すると、独自のロジックとオプションを使用できます。
- 何も見つからない場合は、何らかの逆フィルターを使用します。
- ビューが見つからない場合は別のビューを使用する
- 何がフィルタリングされているか (この場合はフィルタリングされていないのか) をより明確にするために、データ フィルタを非表示にしないでください。
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?なぜアプローチが必要なのかについてのいくつかの洞察どこ()動的ではありません
Where() を使用して分析をフィルターダウンすると、新しいリンクされたプライベート データ テーブルが作成されます:
データテーブルのプライベートサブセットが生成されます
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?Jmp に問題があることをユーザーに示す回避策はありますか - ユーザーが問題を見ずに Jmp を操作できるようにしたいです:)
その他の回避策については、次のとおりです。
私は、Jmp が「何か間違ったことをする」のを防ぐために、車輪の再発明 (独自のデータ フィルターの作成) をするのは好きではありません。
したがって、残るのはオプション #1 です。
一致する行が見つからなくてもデータ フィルターがクリアされないように、ダミー行をデータ テーブルに追加します。
いくつかの厄介な欠点があります。他の場所ではダミー行を手動で「削除」する必要があります...
- 列番号 (if(:dummy_row, ., :alien), ...);
- グラフ ビルダー (..., Where(Ismissing(:dummy_row));
- dfRows = myDataFilter << フィルタリングされた行を取得します。
NRowsAfterDummyScreening=NItems(Loc(-dt[dfRows,"dummy"]+1));
ユーザーがアクティベートしない限り機能します
グループ化列 ( 1 ) に欠落しているものを含めます。
Jmp の将来のバージョンでは、一致するものが見つからなかった場合にデータ フィルターがリセットされないようにするオプションがあることを願っています。 願い事はこうです。
ローカル データ フィルター: 現在のデータに合わせて調整するオプション
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?この問題に対処する方法を見つけました
Include missing for grouping columns( 1 )
データフィルターを使用するエイリアン = 1とダミー = 0 - そしてさらにセット除外された行を数える(1) [デフォルト]。
その場合、データ フィルターは、多くの年齢グループで、alien=1 および dummy=0 の行が存在しないことに気づきません。
気付かないので、選択はリセットされません:)
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:alien[12]=1;
:sex[12]="";
:alien[39]=1;
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Close Outline( 1 ),
Mode( Show( 0 ) ),
//Count Excluded Rows( 0 ),
Add Filter( columns( :dummy, :alien ), Where( Is Missing( :dummy ) ), Where( :alien == 1 ) )
)
)
)
)
);
注意: ある日、データ セット全体にエイリアンが 1 人もいなくなると、このソリューションは失敗します。
この場合の場合...
- ダミーの年齢グループ (「-99」) にダミー = 0 を指定して追加のエイリアンを隠すこともできます。
...ダミー以外のエイリアンをクラス全体として誰もカウントしないように注意してください - または: データ フィルターを 2 つに分割します。
その後、両方ともリセットされないように十分な一致する行を取得します。
もっと見る...Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:sex[12] = "";
New Window( "Outlier Screening with worarounds",
Data Filter Context Box(
H List Box(
dt << Data Filter( Local, Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) ) ),
Data Filter Context Box(
H List Box(
dt << Data Filter( Local, Add Filter( columns( :dummy ), Where( Is Missing( :dummy ) ), Display( :age, N Items( 6 ) ) ) ),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table( Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter( Close Outline( 1 ), Mode( Show( 0 ) ), Add Filter( columns( :alien ), Where( :alien == 1 ) ) )
)
)
)
)
)
);
Jmp ダッシュボードを使用した外れ値 (:alien:) のスクリーニング - どのように?クラス内のエイリアンをリストアップして、外れ値のスクリーニングを行いたいと考えています。
最初の試み:ローカルデータフィルター
ビッグクラスの宇宙人にはかなり衝撃を受けました!
...しかしその後、データ フィルターが単に無視されていることに気づきました (1 日目にはクラスにエイリアンがいなかったため、一致する行がないため、一致する行が 0 つ表示されるのではなく、データ フィルターがリセットされるだけです!!!)。
これに関係があるようですデータフィルター: 制限を指定する方法:
値がデータ フィルターでのみ使用され、データ テーブルでは使用されない場合、その値はデータ フィルターから削除されます。
この動作は、Jmp の別の動作を妨げます。最後のフィルタ値が選択解除されている場合、全て行が (何も選択されずに) 選択されます。
それで、現在データフィルターの動作、このアプローチは機能しません:(
次に、私が使用したのは、どこ()句表形式レポートを制限します。
残念ながら、ある日、クラスにエイリアンが存在しなくなった場合、Where 句はデータ セットを 0 行に制限する代わりに、エラー メッセージを生成します。
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
4つのケースにおける「エイリアン」のリスト:




ご注意ください:
の場合どこ() 、別の問題があります。
レポートの行選択は静的です。
XX が非エイリアンに変わった後も、彼は依然としてレポートに記載されています。

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", nominal, set each value( 0 ) );
myDashboard = Function( {myTitle, withWhereClause},
New Window( myTitle,
<<SHOW menu=""> so many aliens ?!?! no, Data filter was ignored (filter is OK, see below)
myDashboard( "1) Data Filter, no alien", 0 );
// 2) Where Cause + no matching row --> error message instead of a report
myDashboard( "2) Where(), no alien", 1 );
dt << add rows( {name = "XX", alien = 1, sex = "M", age = 200} );
// 3) Data Filter + 1 alien
myDashboard( "3) Data filter, 1 alien", 0 ); // new test: --> filter OK --> works
myDashboard( "4) Where(), 1->0 aliens ...", 1 ); // Where Clause + matching row --> dashboard is created, but ...
// XX gets human -> Dashboard #4 stays the same :(
//dt[41, {"alien"}] = 0;
;</SHOW>
データのブレンディングとクリーンアップデータの探索と視覚化Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?
@jthi書きました:- 何がフィルタリングされているか (この場合はフィルタリングされていないのか) をより明確にするために、データ フィルタを非表示にしないでください。
?
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?@ホギ書きました:
注意: この解決策は失敗します *)
...非常に驚くべき結果が得られました - ヘッダーもフッターもデータ フィルター自体もリセットについて何も知らないようです。

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:sex[12]="";
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Close Outline( 1 ),
Mode( Show( 0 ) ),
//Count Excluded Rows( 0 ),
Add Filter( columns( :dummy, :alien ), Where( Is Missing( :dummy ) ), Where( :alien == 1 ) )
)
)
)
)
);
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?このスクリプトは、Jmp での外れ値スクリーニングに関する内部ディスカッション用に準備しました。
これはほとんどの側面を示しており、回避策をさらに開発するための出発点として使用できます。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
:alien[12] = 1;
:sex[12] = "";
:alien[39] = 1;
New Window( "alien screeing",
<<SHOW menu=""></SHOW>
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?ありがとう@ホギ- これは間違いなくバグのようで、将来のリリースで修正される予定です。
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?@ダンシコレ
このビデオは、何が問題なのかを示すヒントを提供します。
ダッシュボードは Tabulate で間違ったリストから始まります。データ フィルターは「エイリアン」に制限されていますが、リストには Alien=missing のエントリが多数あります。
間違ったエントリを削除するには、ユーザーは「内部」データ フィルターの選択を変更する必要があります。 (ビデオの最初の部分)。 (*)
一方 (2 番目の部分)、データ フィルター コンテキスト ボックスのデータ フィルターに関しては、ユーザーがそこでの選択を変更するとすぐに、Tabulate の内容がリセットされ、「内部」データ フィルターの設定は無視されます。
...ユーザーが (*) で再度修正するまで
サポートチケット: TS-00046650
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?ありがとう :)
それで、結局戻ってきたのは、 @jthiさんの最初の提案:
@jthi書きました:
- :alien = 1 () で「空白」行を追加します。他の値はすべて欠落していますエイリアンであることを除いて 1)
Alien=1 を含む 1 つの空行、for ループなし、追加のダミー列なしなど。
次に、追加のデータ フィルター エントリ sex = missing、name = missing、age = missing によってダミーのエイリアンが表示されます。
- これにより、ダミー エイリアンをレポートから簡単に削除できます。のそれぞれのデータ フィルターのエントリ (!= 欠落)。
- ダミー列を使用したアプローチと比較した利点は次のとおりです。
「今日はエイリアンがいない」場合、外れ値スクリーニングはリセットされません:)
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", Nominal );
dt << add rows( {:alien = 1} );
addAliens=0;
if(addAliens,
:alien[12]=1;
:alien[39]=1;
);
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age, :sex ), Where( :age == 13 ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Add Filter( columns( :alien ), Where( :alien == 1 ) )
)
)
)
)
);
Re: Jmp ダッシュボードを使用した異常値のスクリーニング - 方法は?Jmp 17 では、 Tables/summaryにデータ フィルターが導入されました。
ここでの問題はさらに深刻です。最終的には間違った結果が表示されるだけです。ダッシュボードの左側にはデータ フィルターがなく、「明らかに」間違った設定が表示されます。表/概要に関する 2 つのバグ
Re: Jmp ダッシュボードを使用した外れ値スクリーニング - 方法は?Hi @danschikore ,
@danschikore は次のように書きました:
@hogi さん、ありがとうございます。これは明らかにバグのようですので、今後のリリースで修正する予定です。
このコメントは、2 つのデータ フィルターを使用した特殊なケースを指しているのでしょうか、それとも一般的なケースを指しているのでしょうか。
値が現在のデータ テーブルにない場合、データ フィルターはその設定を忘れてしまいますか?
Re: Jmp ダッシュボードを使用した外れ値スクリーニング - 方法は?こんにちは@hogi - 私が言及していたのは、ビデオで紹介されている最初の問題、つまり、外部フィルターが変更されたときに Tabulate が正しいサブセットを表示しないという問題です。しかし、このスクリプトはここには提供されていません。テクニカル サポート経由で送信しましたか?
-そして
Re: Jmp ダッシュボードを使用した外れ値のスクリーニング - 方法は?このビデオは 2 つ前の投稿のコードに基づいて作成されましたが、同じ問題がありました。
Jmp18 では見た目がずっと良くなりました。この問題は修正できそうです。
一方、設定を「忘れる」データ フィルターの問題は依然として存在します。
https://community.jmp.com/t5/Discussions/Can-animation-of-this-difficulty-be-achieved-with-JSL/mp/755896#M93798
Re: Jmp ダッシュボードを使用した外れ値スクリーニング - 方法JMP19で修正された点:
Jmp と JSL の小さな罠
Re: Jmp ダッシュボードを使用した外れ値スクリーニング - 方法ぜひご覧ください
JMPとJMP Proの最新機能強化の使い方@ 9分 / @brady_brady
強制値がデータ フィルターの問題をどのように修正するかを示すライブ デモをご覧ください。
とても滑らかでエレガントになりました:)