열에서 무작위로 하위 샘플링안녕하세요 여러분 - 저는 전국에 200개의 매장을 운영하고 있습니다.이러한 상점의 일부를 하위 샘플링하고 이벤트 분포를 근사화할 수 있는지 알고 싶습니다. 예를 들어 원래 200개의 무작위 하위 샘플로 새 열의 30개 행을 채우는 Monte Carlo 방법이 있을 수 있습니다.
그런 다음 하위 표본의 30개 카운트 분포를 200개 모집단의 분포와 비교할 수 있습니다.
이 말을 100번 반복하여 200명의 인구를 대표하기 위해 30개 매장을 샘플링할 위험을 결정합니다.
생각?고마워, 폴
200개의 처음 10개 행
Store# - 열 1
짝수 개수 - 열 2
19 20 21 22 23 25 26 27 29 34 | 1 4 7 삼 4 삼 12 5 8 8 |
품질 및 프로세스 엔지니어링Re: 열에서 무작위로 하위 샘플을 추출합니다.
고마워, 론
Re: 열에서 무작위로 하위 샘플을 추출합니다.안녕 @폴프 ,
이러한 애플리케이션에서 유용할 수 있는 다른 비스크립팅 솔루션은 테이블 메뉴에서 JMP 쿼리 빌더를 사용하는 것입니다.

그림과 같이 무작위 샘플링 탭을 찾을 수 있습니다.

평소처럼 대화식으로 실행하면 추가 사용을 위해 생성된 스크립트를 사용할 수 있습니다.
Re: 열에서 무작위로 하위 샘플을 추출합니다.Sam과 솔루션을 게시한 모든 분들께 감사드립니다.
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개 행의 원래 모집단에서 하위 샘플링된 데이터 열을 직접 생성하려고 합니다.
- 부트 스트랩이 아닌 교체없이 샘플을 선호합니다.
한 번 하위 샘플링된 원본 데이터만 필요한 경우 가장 쉬운 경로는 Table > Subset > Random Sample Size = 30(예:)입니다.
저는 스크립트를 작성하지 않습니다. 그렇지 않으면 30개의 무작위 샘플로 구성된 100개의 테이블을 생성하는 루프를 생성한 다음 100개의 테이블을 마스터 테이블로 연결합니다.
열에서 30개의 임의 샘플을 직접 가져오고 이 30개의 값을 새 열에 넣는 방법이 있습니까?
궁극적으로 신뢰도 > 수명 분포 > 그룹 비교를 시도하여 하위 샘플의 분포와 원래 모집단 분포를 평가하고 싶습니다.
- 그런 다음 샘플 크기 = 20, 그 다음 40 등을 반복하여 200개 매장 모집단에 유사한 분포를 제공하는 최소 샘플 크기를 평가할 수 있습니다.
고마워, 폴
Re: 열에서 무작위로 하위 샘플을 추출합니다.를 살펴보세요 Freq() 리샘플링 기능.
주파수 리샘플링
부트스트래핑에 사용하기에 적합한 대체 빈도 수로 무작위 선택을 생성합니다. 예를 들어, 두 번째를 지원합니다. 주파수 열 두 번째 인수에 지정된 기존 빈도 열과 관련된 부트스트랩 샘플을 수행할 수 있습니다. Freq() 리샘플링 100% 리샘플을 생성합니다. ResampleFreq(속도) 생성 비율 주파수 샘플. 재표본(비율, 열) 지정된 열의 합계를 곱한 비율로 계산되는 샘플을 생성합니다. Resample Freq 함수의 구문에 대한 자세한 내용은 다음을 참조하십시오. 이산 확률 함수 에서 JSL 구문 참조 .