列からランダムにサブサンプリングする皆さん、こんにちは。私は全国に 200 店舗を展開しています。これらの店舗の一部をサブサンプリングして、イベントの分布を概算できるかどうか知りたいと思っています。 たとえば、新しい列の 30 行を元の 200 行からのランダムなサブサンプルで埋めるためのモンテカルロ法が存在する可能性があります。
次に、サブサンプル内の 30 カウントの分布を母集団 200 の分布と比較できます。
これをたとえば 100 回繰り返して、母集団 200 を表すために 30 店舗をサンプリングするリスクを決定します。
考えは?ありがとう、ポール
200 行のうち最初の 10 行
ストア番号 - 列 1
偶数カウント - 列 2
19 20 21 22 23 25 26 27 29 34 | 1 4 7 3 4 3 12 5 8 8 |
品質およびプロセスエンジニアリングRe: 列からランダムにサブサンプリングする
ありがとう、ロン
Re: 列からランダムにサブサンプリングするこんにちは@ポールプ、
このようなアプリケーションで役立つもう 1 つの非スクリプト ソリューションは、[テーブル] メニューの JMP クエリ ビルダーを使用することです。

写真のようにランダムサンプリングタブがあります。

通常どおり、対話的に実行すると、追加の用途のために作成されたスクリプトを利用できます。
Re: 列からランダムにサブサンプリングするサム、そして解決策を投稿してくれた皆さんに感謝します。
Re: 列からランダムにサブサンプリングするソリューションをスクリプト化していないことを理解しています。 [テーブル] > [サブセット] を対話的に使用して、元のデータ テーブルからランダムに選択された行を含む新しい小さなテーブルを作成することもできます。 その方法はあなたにとってうまくいきますか?
Re: 列からランダムにサブサンプリングする以下は、置換せずに指定されたサイズのサブセットを作成するスクリプトの例です。
Names Default To Here( 1 );
dt =
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// New formula column: Row
Data Table( "semiconductor capability" ) << New Column( "Row",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Row() )
) << Move Selected Columns( {:Row}, after( :SITE ) );
// Loop through data creating sample data tables
sampleSize = 20;
For( i = 1, i <= 20, i++,
dtSample = Data Table( "semiconductor capability" ) << Subset(
Sample Size( sampleSize ),
Selected columns only( 0 ),
output table( "Sample " || Char( i ) )
);
matSelected = dtSample:Row << get values;
// Delete row column from sample data
dtSample << delete columns( Row );
// Delete selected rows from main table
dt << select rows( matSelected );
dt << delete rows;
);
// Delete row column from original data table
dt << delete columns( Row );Re: 列からランダムにサブサンプリングする列数式を使用してサブサンプルを行う簡単な方法は、Col Shuffle() 関数を使用することです。この関数は、行番号のランダムな並べ替えを返します。Col Shuffle() の値がサブサンプル サイズ (n_sub) 以下である行を選択する場合、これは列をランダムに順序付けして最初の n_sub 行を選択することと同じです。
たとえば、この数式を使用して新しい列を追加すると、サブサンプル サイズ 30 に対してこれが行われます。

サンプルテーブルを添付します。
これを繰り返し実行したい場合は、JMP スクリプトを学習すると簡単になります。このような列を繰り返し追加する基本的なスクリプトは次のとおりです。
Names Default to Here( 1 );
Number_of_Cols_to_Add = 100;
For( i = 1, i <= Number_of_Cols_to_Add, i++,
Current Data Table() <<
New Column( "Y Subsample (Size 30)",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Col Shuffle() <= 30, :Y, . ) )
)
);
Re: 列からランダムにサブサンプリングするこんにちはジェフ、返信ありがとうございます。残念ながら、私の目的に合わせてこの関数を使用する方法がわかりません。
- Resample Freq は、再サンプルのカウントを作成します。これは、サブサンプリングされたデータを含む新しいテーブルを作成するための中間ステップであるようです。 元の母集団である 200 行からサブサンプリングされたデータの列を直接作成したいと考えています。
- ブートストラップではなく、置き換えなしでサンプリングしたいと考えています。
元のデータのサブサンプリングが 1 回だけ必要な場合、最も簡単なパスは [テーブル] > [サブセット] > [ランダム サンプル サイズ = 30] になります (例)
私はスクリプトを作成しません。そうでない場合は、30 個のランダム サンプルからなる 100 個のテーブルを生成するループを作成し、その 100 個のテーブルをマスター テーブルに連結します。
列から 30 個のランダムなサンプルを直接取得し、それらの 30 個の値を新しい列に入れる方法はありますか?
最終的には、[信頼性] > [寿命分布] > [グループの比較] を試して、サブサンプルの分布と元の母集団の分布を評価したいと考えています。
- 次に、サンプル サイズ = 20、次に 40 というように繰り返して、200 店舗の母集団に同様の分布を与える最小サンプル サイズを評価します。
ありがとう、ポール
Re: 列からランダムにサブサンプリングするを見てください。リサンプル周波数()関数。
リサンプル周波数
ブートストラップでの使用に適した、置換頻度カウントを含むランダムな選択を生成します。 たとえば、2 番目の頻度列引数を使用して、2 番目の引数で指定された既存の頻度列に関連するブートストラップ サンプルを実行できるようにします。 リサンプル周波数() 100% のリサンプルを生成します。 リサンプル周波数(レート)を生成しますレート周波数サンプル。 リサンプル(レート、カラム)指定された列の合計を乗算したレートによって計算されるサンプルを生成します。 Resample Freq 関数の構文の詳細については、「離散確率関数の中にJSL 構文リファレンス。