데이터 세트에서 할당량 샘플을 선택하는 방법여러분, 안녕하세요
저는 대표적 표본을 다루는 연구를 하고 있습니다. 저는 이미 데이터를 수집했지만, 4가지 대표 기준을 충족하는 하위 집합을 선택해야 합니다. 표본은 다음 할당량을 충족해야 합니다.
-
성별은 남성 50%, 여성 50%입니다.
-
연령별로는 1/3이 18세에서 30세 사이, 1/3이 31세에서 50세 사이, 1/3이 51세 이상입니다.
-
가계 소득 수준에 따라 낮은 계층에서 1/3, 중간 계층에서 1/3, 높은 계층에서 1/3입니다.
도시의 5개 지역(북부, 남부, 중부, 동부 및 서부)별 연구 인구의 1/5
이 샘플을 어떻게 만들 수 있나요?
저는 JMP pro 17을 사용하고 있습니다
데이터 접근데이터 블렌딩 및 정리Re: 데이터 세트에서 할당량 샘플을 선택하는 방법교과서적인 연습 문제 같은데, 해결책이 나와 있는 장이 있나요?
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법아니요
실제로 저는 이 할당 샘플링 기술을 사용한 프로젝트의 데이터 분석을 시작하기 위해 동료와 이 문제에 대해 논의했습니다.Re: 데이터 세트에서 할당량 샘플을 선택하는 방법이것은 복잡한 문제입니다. 데이터를 가져오는 데이터 테이블의 크기는 얼마입니까? 어떤 크기의 샘플을 가져오고 있습니까? 4개 열의 조합은 90가지입니다. 귀하와 귀하의 동료는 문제에 접근하는 방법에 대한 아이디어를 내놓았습니까?
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법그리고 분포의 실제 점유율에 따라 샘플 데이터를 선택하지 않고, 인위적인 분수에 따라 선택하고 싶습니까?
여성, 51세 이상, 고소득, 북쪽은 어떨까요?
1/2 * 1/3 * 1/3 * 1/5이 되어야 하나요? (*)
이건 계산하기 아주 쉬운데 - 어쩌면 너무 엄격하고 의도치 않은 걸까요?
원래 분포에 북쪽 지역에 51세 이상의 고소득 여성이 없는 경우를 생각해 보세요.
반면에: 1/2, 1/3, 1/3, 1/5만 충족하면 되는 경우 여성, 51세 이상, 고소득, 북부에 대한 샘플 데이터가 0개인 극단적인 사례를 구성할 수 있습니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법이건 우아하지 않고 작동할지 확신할 수 없지만 작동할 수도 있습니다. 각 기준에 대해 0,1 열을 만든 다음 이를 단일 0,1 열로 결합할 수 있습니다. 여기서 1은 모든 개별 기준 열이 =1임을 의미합니다. 그러면 원하는 하위 집합이 생성됩니다. 그리고 이러한 행에서 무작위로 선택하려면 해당 0,1 열로 계층화된 검증 열을 사용하기만 하면 됩니다. 말씀드렸듯이 우아하지는 않지만 작동할 수도 있습니다.
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" )
)
)
)
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법이러한 이상적인 표의 경우(데이터 집합의 확률이 원하는 비율에 맞는 경우) 무작위 표본을 선택할 수 있습니다. 즉, 변형당 무작위 표본이나 변형당 특정 수의 표본을 선택하거나 이 세 가지를 모두 조합할 수 있습니다...
당신은 항상 요청한 분수(1/2, 1/3, 1/3 및 1/5)를 갖는 하위 그룹을 얻게 될 것입니다.

// 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(<BR /> Title( "how many samples do you want ? " ),
Add Filter(
columns( :cum_prob, :cum_prob_indiv, :rank_indiv )
)
)
);
**) 무작위 uniform()을 사용하여 CDF를 사용하는 대신, 행 순서를 무작위로 지정 하고 "1"의 CDF를 사용할 수 있습니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법마지막 옵션은 아래와 같은 덜 체계적인 표에도 적용됩니다.
유일한 제한점은 특정 변형에 대한 샘플이 적은 경우 선택할 수 있는 샘플 수에 명확한 제한이 있다는 것입니다.
이는 간단한 규칙을 따릅니다.
변형 중 하나(A)에 대해 샘플이 N개만 있는 경우, 해당 샘플을 취하고 다른 변형에서 같은 수의 임의 샘플을 선택합니다.
실제로 변형 "A"의 경우 이는 샘플링이 아닙니다.
그렇다면 모든 변형에서 무작위로 M << N개의 샘플을 선택하는 게 어떨까요?
동일한 (JSL) 논리를 적용할 수 있습니다. N을 더 낮은 값으로 조정하기만 하면 됩니다.
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))),
)
)
);
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법저는 이 질문에 대해 많은 시간을 고민했지만 좋은 답을 찾지 못했습니다. 저는 @hogi 와 비슷한 샘플 데이터 테이블을 생성했습니다. 아래는 제가 사용한 코드로 @hogi JSL을 수정한 것입니다. 기본적으로 읽기가 더 쉽고 Age의 경우 @Samira 가 언급한 대로 분포를 더 잘 나타낸다고 생각합니다.
New Table( "Samp",
Add Rows( 100000 ),
Compress File When Saved( 1 ),
New Column( "gender",
Character,
Set Each Value( Match( Random Integer( 1, 2 ), 1, "Male", "Female" ) ),
Compact()
),
New Column( "income",
Character,
Set Each Value(
Match( Random Integer( 1, 3 ), 1, "Low", 2, "Medium", "High" )
),
Compact()
),
New Column( "region",
Character,
Set Each Value(
Match( Random Integer( 1, 5 ),
1, "North",
2, "South",
3, "West",
4, "East",
"Ccentre"
)
)
),
New Column( "age",
Character,
Set Each Value(
temp = Random Integer( 18, 80 );
If(
temp <= 30, "Young",
temp <= 50, "Middle Age",
"Old"
);
)
)
)
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법답변 감사합니다
이 아이디어는 도시 전체에 거주하는 인구를 대표하는 표본에 대한 연구를 수행하는 것입니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법귀하의 노고에 감사드립니다
귀하의 제안은 그래프 빌더에서 로컬 데이터 필터를 먼저 사용하여 데이터 세트를 효과적으로 탐색하는 좋은 아이디어를 제공했습니다. 제 데이터의 경우 일부 조합(예: IM 소득이 있는 중년 남성)의 경우 샘플이 0인 것 같습니다.
이런 방식으로 대표 표본을 만드는 전체적인 아이디어는 이제 실용적이지 않은 듯합니다. 처음부터 사용했어야 할 표집 기법은 확률 표집 기법 중 하나입니다. 5개 지역만을 계층으로 사용하는 계층화 임의 표집일 수 있습니다. 그런 다음 각 계층에서 임의 표본을 수집합니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법귀하의 시간과 노력에 감사드립니다
이런 방식으로 대표 표본을 만드는 전체적인 아이디어는 이제 실용적이지 않은 듯합니다. 처음부터 사용했어야 할 표집 기법은 확률 표집 기법 중 하나입니다. 5개 지역만을 계층으로 사용하는 계층화 임의 표집일 수 있습니다. 그런 다음 각 계층에서 임의 표본을 수집합니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법답변 감사합니다
나는 당신이 옳다고 생각합니다.
이런 방식으로 대표 표본을 만드는 전체적인 아이디어는 이제 실용적이지 않은 듯합니다. 처음부터 사용했어야 할 표집 기법은 확률 표집 기법 중 하나입니다. 5개 지역만을 계층으로 사용하는 계층화 임의 표집일 수 있습니다. 그런 다음 각 계층에서 임의 표본을 수집합니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법그것은 합리적인 접근 방식처럼 들립니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법그렇다면 원래 게시물에서 요청하신 내용은 다음과 같습니다.
불균형적인 층화 무작위 표집법 , 맞죠?
그리고 계층은 성별 x 연령 x 소득 x 지역에 따른 90개의 하위 그룹입니다.
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법교과서의 다양한 표본 추출 기법을 신중하게 수정한 후, 저는 제 원래 아이디어가 어느 것과도 맞지 않는다는 것을 알게 되었습니다. 대표 표본을 얻으려면 확률 표본 추출 기법 중 하나를 선택해야 합니다(연구 모집단의 각 응답자에게 표본에 포함될 동일한 확률 또는 기회를 제공). 이러한 기법에는 4가지 유형이 포함됩니다.
- – 단순 무작위 표본 추출
- – 체계적인 샘플링
- –클러스터 샘플링
- –계층화 샘플링
그래서 저는 처음부터 층화 샘플링을 사용하여 연구 샘플을 얻을 수 있다고 생각합니다( 5개 지역만 층으로 사용). 그런 다음 각 층에서 임의 샘플을 수집합니다. 층화, 클러스터 및 할당 샘플링 기술은 모집단을 상호 배타적 그룹 으로 분류해야 하는데, 이는 제 질문의 상황이 아닙니다. 그래서 저는 제 원래 질문이 처음부터 옳지 않다고 생각합니다.
:
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법음, 이 사례를 DOE와 비교해 보면...
잘 설계된 DOE에서는 90개 하위 집합 각각에서 (단일) 샘플을 선택하지도 않습니다.
[90개 하위 집합 각각에서 1개 샘플: "전체 요인" -> "비쌈"으로 가는 길]
그렇다면 모델을 약간 단순화하는 것과 함께, 일부 교차점에 누락된 항목이 있는 데이터 세트를 사용해도 괜찮을까요? 그리고 한 걸음 더 나아가, 일부 교차점에서 (일부 데이터 포인트를) 의도적으로 제거하면 계층화된 입력 데이터와 균형 잡힌 DOE 사이에서 유용한 것을 얻을 수 있을까요?
@Victor_G 님 이 제안하실 게 있을까요?
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법
Re: 데이터 세트에서 할당량 샘플을 선택하는 방법"변형당 무작위 샘플링" 접근 방식의 경우
https://community.jmp.com/t5/Discussions/How-to-Select-a-quota-sample-from-a-data-set/mp/821078/highlight/true#M100011
임의의 데이터를 계층화하기 위해 JSL 스니펫을 만들었습니다. 열을 선택하고 확인을 클릭하기만 하면 됩니다.
librecall은 여기에서 다운로드할 수 있습니다: Recall 함수 라이브러리
Names Default To Here( 1 );
verbose=0;
//Include( ".\libRecall_v2.jsl" );
objects = {"si^myCols", "s^Ncolumns", "s^Nfolds"};
values = {{}, {1}, {5}};
Try( // issue with projects
librecall:genArrays( objects, values, "Stratify", verbose )
);
dt = Current Data Table();
nw = New Window( "K Fold Creator",
<<TYPE></TYPE>Re: 데이터 세트에서 할당량 샘플을 선택하는 방법@hogi님 , @Samira님 , 안녕하세요.
게시물과 답변을 잠깐 읽었지만 "대표적인" 데이터 세트가 다른 의미를 가질 수 있으므로 여전히 귀하의 목적이 100% 명확하지 않습니다.
인구 통계 데이터(연령, 성별, 위치 등)를 기반으로 반응/현상을 더 잘 이해하고 모델링하고 싶으신가요? 아니면 모집단에 대한 추론/일반화를 위해 "대표성 있는" 샘플을 원하시나요?
- 첫 번째 경우, 반응/현상을 특정 속성에 연결하고 싶기 때문에 나이, 성별, 위치 등에 대한 수준이 균형 잡힌 데이터 세트를 갖는 것이 가장 좋습니다. 이렇게 하면 결과를 모델링하고 해석하기가 더 쉬워집니다.
DoE 방식을 사용하면 맞춤형 디자인을 "처음부터" 구축하고 다양한 속성에 해당하는 적합한 사람을 찾거나, 수집된 인구 통계 데이터를 사용하여 후보 집합 방식 덕분에 D-최적 디자인을 구축하면 다양한 인구 통계적 요소를 가능한 한 독립적이고 개별적으로 조사하고 분석하는 데 도움이 됩니다.
- 두 번째 경우, 표본의 결과를 모집단으로 일반화하고자 하기 때문에 모집단의 대표 표본(모집단만큼 "편향된")이 필요합니다. 따라서 예를 들어 모집단이 40/60으로 편향될 수 있으므로 50/50 남성/여성이 없을 수 있으므로 이러한 인구학적 특이성을 존중해야 합니다.
5개 지역에서 수집한 인구 통계 데이터에 계층화된 접근 방식을 사용하면 도움이 될 수 있습니다. 두 가지 측면을 고려해야 할 수도 있습니다. 인구에 따른 지역 샘플 생성(지역 인구에 대한 샘플 비율이 동일해야 하므로 인구 밀도가 높거나 인구가 밀집된 지역에는 샘플 데이터 세트에 더 많은 사람이 포함됨)과 인구 통계 데이터(성별, 연령 등)에 따른 샘플 생성입니다.
두 경우 모두 5개 지역의 인구에 대한 최대한 많은 데이터를 수집하여 샘플 생성 방법을 더 잘 이해하고 정보를 제공하는 것이 좋습니다.
덧붙여, 인구 통계 데이터의 세분화에 대한 문헌도 찾을 수 있습니다. 여기서 제안하는 연령 세분화가 실제로 도움이 되는지 잘 모르겠습니다. 연령대가 다르거든요: 18-30세(12세), 31-50세(19세), 51세 이상(20세 이상?). 또한 가계 소득 수준을 낮음/중간 및 높음으로 정의하는 방법은 무엇인가요? 분석이나 사전 정의된 임계값/기준에 따라 정의하나요?
인구 통계적 세분화에 대한 몇 가지 예: https://xperiencify.com/what-is-demographic-segmentation/
이 답변이 몇 가지 아이디어를 제공할 수 있기를 바랍니다.