データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?ディストリビューション プラットフォームを使用すると、デフォルトでビン幅が常に大きくなり、ディストリビューションをよく理解するのに役立ちません。 私が処理しなければならないデータは、大きさ (メガ、ミリ、単位など) の順序で変化するため、すべてのヒストグラムの固定ビンは機能しません。 また、処理する必要がある実際のケースでは、何百ものテストがあるため、プロットを 1 つずつ調整することもできません。 個々のプロットのビン幅をデータ範囲によって決定する方法はありますか? たとえば、単に範囲を取得して 100 等分または 50 などに分割したいので、単位に関係なく、個別に調整しなくても、すべてのプロットで外観が多少均一になります。 添付の 3 つのプロットの例では、デフォルトでビンの幅がおそらくデータ範囲の 1/100 に設定されるようにしたいと考えています。
ありがとう!
グラフィックRe: データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?上記のコードの一部を使用し、Eval/Parse 式を使用してビンを設定できました。
ありがとう。
dt = currentdatatable();
col = dt << get column names();
nc = N Items( col );
colList = {};
bin_width={};
For( i = 1, i <= nc, i++,
If(Contains (col[i],"::"),
Insert Into( colList, col[i] ))
);
For(i = 1, i <= N Items(colList), i++,
Insert Into(bin_width,0.0);
bin_width[i] = Col Max(Column(dt, colList[i])) - Col Min(Column(dt, colList[i]));
bin_width[i] = bin_width[i]/10;
);
theExpr = "dis = dt << Distribution(Stack( 1 ),
Continuous Distribution( column( column(dt,colList[1])), Set Bin Width(bin_width[1]), Label Row( Label Orientation( \!"Perpendicular\!" ) ))
";
For( i = 2, i < N Items( colList ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colList[" || Char( i ) || "])), Set Bin Width(bin_width[i]))"
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );Re: データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?ありがとう@ron_horneと@jthiコード スニペット用。 試してみます。
Re: データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?Set Bin Width() を使用した以前のコードの改善である可能性が最も高い@ron_horne .
ループは、より巧妙な方法で行うことができます。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Students.jmp");
colList = {"height", "weight"};
dist = dt << Distribution(
Continuous Distribution(Column(:height)),
Continuous Distribution(Column(:weight))
);
wait(1);
For(i = 1, i <= N Items(colList), i++,
newInc = Col Max(Column(dt, colList[i])) - Col Min(Column(dt, colList[i]));
newInc = newInc/10;
dist[i] << Set Bin Width(newInc);
);Re: データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?やあ@ブレイノ
開発の基礎としてこれはどうですか:
Open( "$SAMPLE_DATA/Big Class.jmp" );
Distribution(
Continuous Distribution( Column( :height ), Set Bin Width( (colmax(:height)-colmin(:height))/50 ) ),
Continuous Distribution( Column( :weight ), Set Bin Width( (colmax(:weight)-colmin(:weight))/100 ) )
);
Re: データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?あなたはそれをスクリプト化しようとすることができます。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Students.jmp");
colList = {"height", "weight"};
dist = dt << Distribution(
Continuous Distribution(Column(:height)),
Continuous Distribution(Column(:weight))
);
wait(2);
rep_layer = Report(dist);
axisbox = rep_layer[axis box(1)];
For Each({val}, colList,
//some calculation for inc
newInc = Col Max(Column(dt, val)) - Col Min(Column(dt, val));
newInc = newInc/10;
cur_rep = rep_layer[OutlineBox(val)];
axisbox = cur_rep[axis box(1)];
axisbox << Inc(newInc);
);Bin Span() もありますが、ディストリビューションがビルドされた後に変更できるかどうかはわかりません。
Re: データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?こんにちはロン:
提案していただきありがとうございます。 残念ながら、多数のテストが好きではありません。プロットするテストを 30 個まで追加しようとすると、「項目を追加できません: リストには既に最大数の項目が含まれています」というエラーが表示されます。
ほとんどの分布には幅の広いバーが表示されるため、ビンの幅を調整するための一般的な設定があることを望んでいました。
Re: データ範囲自体に基づいて分布のビン幅を自動的に調整するにはどうすればよいですか?やあ@ブレイノ、
ここで始める:
https://community.jmp.com/t5/JMP-Add-Ins/2D-Histograms/ta-p/377945
役立つかどうかお知らせください。