cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
View Original Published Thread

データセットからクォータサンプルを選択する方法

Samira
Level III

こんにちは、みんな

私は代表的なサンプルを扱う研究に取り組んでいます。すでにデータを収集していますが、代表基準 4 を満たすサブセットを選択する必要があります。サンプルは、次の割り当てを満たす必要があります。
-
性別:男性50%、女性50%。
-
年齢別では、18歳から30歳が1/3、31歳から50歳が1/3、51歳以上が1/3となっています。
-
世帯収入レベル:低所得者層が1/3、中所得者層が1/3、高所得者層が1/3。

調査対象人口の1/5を市内の5つの地域(北部、南部、中央部、東部、西部)ごとに調査

このサンプルを作成するにはどうすればいいでしょうか?

私はJMPプロ17を使用しています

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

20 REPLIES 20
hogi
Level XII

Re: データ セットから割り当てサンプルを選択する方法

教科書の練習問題のようですが、解答が載っている章はありますか?

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

Samira
Level III

Re: データ セットから割り当てサンプルを選択する方法

いいえ
実際、私はこの割り当てサンプリング手法を使用してプロジェクトのデータ分析を開始するために、同僚とこの問題について話し合っていました。

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

txnelson
Super User

Re: データ セットから割り当てサンプルを選択する方法

これは複雑な問題です。データを取得するデータ テーブルの大きさはどれくらいですか。取得するサンプルのサイズはどれくらいですか。4 つの列の組み合わせは 90 通りあります。あなたと同僚は、この問題へのアプローチ方法についてアイデアを思いつきましたか。

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

hogi
Level XII

Re: データ セットから割り当てサンプルを選択する方法

サンプルデータを分布の実際のシェアではなく、人為的な割合で選択したいのですか?

女性、51歳以上、高収入、北部はどうでしょうか。
1/2 * 1/3 * 1/3 * 1/5 でしょうか? (*)
これは計算が非常に簡単ですが、厳しすぎる可能性があり、意図的ではないのでしょうか?
元の分布に、女性、51 歳以上、高収入、北部が存在しないケースを考えてみましょう。

一方、1/2、1/3、1/3、1/5 のみを満たす必要がある場合は、女性、51 歳以上、高収入、北部のサンプル データが 0 の極端なケースを作成することもできます。

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

Samira
Level III

Re: データ セットから割り当てサンプルを選択する方法

ご返信ありがとうございます

都市全体に住む人口の代表サンプルを対象に調査を実施するというアイデアである。

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

dlehman1
Level V

Re: データ セットから割り当てサンプルを選択する方法

これはエレガントではありませんし、うまくいくかどうかもわかりませんが、うまくいくかもしれません。各基準に対して 0,1 列を作成し、それらを 1 つの 0,1 列に結合できます。ここで、1 は個々の基準列がすべて =1 であったことを意味します。これで目的のサブセットが得られます。また、そのような行からランダムに選択する場合は、その 0,1 列で階層化された検証列を使用します。前述したように、エレガントではありませんが、うまくいく可能性があります。

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

hogi
Level XII

Re: データ セットから割り当てサンプルを選択する方法

データ テーブル - 理想的なケース:

New Table( "quota_samples",
	Add Rows( 100000 ),
	Compress File When Saved( 1 ),
	New Column( "gender",
		Character,
		Formula( Match( Floor( Random Uniform() * 2 ), 0, "M", "F" ) ),
		Compact(),
		Set Selected
	),
	New Column( "income",
		Character,
		Formula(
			Match( Floor( Random Uniform() * 3 ), 0, "low", 1, "medium", "high" )
		),
		Compact()
	),
	New Column( "region",
		Character,
		Formula(
			Match( Floor( Random Uniform() * 5 ),
				0, "N",
				1, "S",
				2, "W",
				3, "E",
				"C"
			)
		)
	),
	New Column( "age",
		Character,
		Formula(
			Match( Floor( Random Uniform() * 3 ), 0, "young", 1, "medium", "old" )
		)
	)
)

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

hogi
Level XII

Re: データ セットから割り当てサンプルを選択する方法

このような理想的なテーブルの場合、(データ セットの確率が希望する割合に適合する場合)、ランダム サンプル (バリアントごとのランダム サンプル、バリアントごとの特定のサンプル数)、またはこれら 3 つすべての組み合わせを選択できます。
要求された割合(1/2、1/3、1/3、1/5)のサブグループが常に取得されます。

undefined

// random sampling : full data set
if(not(current data table() << has column ("cum_prob")),New Column( "cum_prob",
	Formula(
		Col Rank( random uniform()) / (
		Col Number( 1 ))
	)
));

// random sampling : per variant
if(not(current data table() << has column ("cum_prob_indiv")),New Column( "cum_prob_indiv",
	Formula(
	tmp = random uniform(); // tmp =1; // **)
		Col Rank( tmp, :gender, :income, :region, :age ) / (
		Col Number( tmp, :gender, :income, :region, :age ))
	)
));

// force ratios: 1/2, 1/3, 1/3, 1/5
if(not(current data table() << has column ("rank_indiv")),
New Column( "rank_indiv",
	Formula( Col Rank( random uniform(), :gender, :income, :region, :age ) )
));

Graph Builder(
	Size( 518, 448 ),
	Show Control Panel( 0 ),
	Graph Spacing( 4 ),
	Variables( X( :gender ), X( :income ), X( :region ), X( :age ) ),
	Elements( Position( 1, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Elements( Position( 2, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Elements( Position( 3, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Elements( Position( 4, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Local Data Filter(        Title( "how many samples do you want ? " ),
		Add Filter(
			columns( :cum_prob, :cum_prob_indiv, :rank_indiv )
		)
	)
);

**)ランダムなuniform()で CDF を使用する代わりに、行の順序をランダム化して「1」の CDF を使用することができます。

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

hogi
Level XII

Re: データ セットから割り当てサンプルを選択する方法

最後のオプションは、以下のような体系化されていないテーブルにも適用できます。
唯一の制限は、特定のバリアントのサンプルが少ない場合、選択できるサンプルの数に明確な制限があることです。

それは単純なルールに従います:
バリアントの 1 つ (A) に N 個のサンプルしかない場合は、それらのサンプルを取り、他のバリアントから同じ数のランダム サンプルを選択します。
実際、バリアント「A」の場合、これはサンプリングではありません。

したがって、すべてのバリアントからランダムに M << N 個のサンプルだけを選択することになります。
同じ (JSL) ロジックを使用できます - N をより低い値に調整するだけです。

SampleSelection.mp4
Video Player is loading.
Current Time 0:00
Duration 0:00
Loaded: 0%
Stream Type LIVE
Remaining Time 0:00
 
1x
    • Chapters
    • descriptions off, selected
    • captions off, selected



      variants = {};
      For Each( {gender}, {"F", "M"},
      	For Each( {age}, {"young", "medium", "old"},
      		For Each( {income}, {"low", "medium", "high"},
      			For Each( {region}, {"N", "S", "E", "W", "C"},
      				Insert Into( variants, Concat Items( {gender, age, income, region} ) )
      			)
      		)
      	)
      );
      
      	Eval(
      		Eval Expr(
      		new table(
      	"unfair",
      	add rows( 100000 ), 
      	
      
      			New Column( "variant",Character,
      				formula(
      					variants = As constant(Expr( variants ));
      					Try(
      						variants[Floor( Random Normal( 45, 30 ) )],
      						"F young medium C"
      					);
      				)
      			),
      			
      			New column ("gender",Character, formula(Word(1,:variant))),
      			New column ("age",Character, formula(Word(2,:variant))),
      			New column ("income",Character, formula(Word(3,:variant))),
      			New column ("region",Character, formula(Word(4,:variant))),
      		)
      	)
      );
      
      

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