원래 분포를 유지하는 하위 집합 생성연속형 변수가 있는 데이터 테이블이 있고 원본 테이블과 동일한 분포를 유지하는 여러 하위 집합을 생성하려는 경우 어떻게 해야 합니까?
JMP Pro가 있고 하위 집합 메뉴에서 Stratify 옵션을 사용해 보았지만 어떻게 해야 할지 알 수 없었습니다.
데이터 탐색 및 시각화Re: 원래 분포를 유지하는 하위 집합 생성원하는 대로 계층화된 검증 열(예측 모델링 아래)을 만든 다음 해당 하위 집합을 사용할 수 있습니다. 적어도 처음에는 3개의 하위 집합(훈련, 검증 및 테스트 하위 집합)으로 제한되어 있지만 더 필요한 경우 여러 번 수행할 수 있습니다. 하위 집합 메뉴에서 계층화 옵션을 사용한 적이 없지만 작동하는 것처럼 보이지만 한 번에 하나의 하위 집합만 생성됩니다.
Re: 원래 분포를 유지하는 하위 집합 생성JMP Pro가 있고 Stratify를 언급하셨기 때문에 JMP Pro용 XGBoost 추가 기능의 "K-Fold 열 만들기"( https://community.jmp.com/t5/JMP-Add-Ins/ )라는 또 다른 옵션이 있습니다. XGBoost-Add-In-for-JMP-Pro/ta-p/319383 ) 그리고 3, 4, 5페이지를 읽어보세요.
"XGBoost Add-in.pdf" 파일에 있습니다.

이 함수는 원래 분포를 유지하는(추가 기능에서는 이를 균형이라고 함) 하위 집합(추가 기능에서는 접기라고 함)을 생성하는 동시에 계층화 변수도 균형을 유지하여 계층화를 존중합니다. 해당 PDF 문서의 5페이지에 있는 히스토그램을 참조하세요.
Re: 원래 분포를 유지하는 하위 집합 생성답변해 주셔서 감사합니다.
3개 이상의 하위 집합이 필요하다는 것을 깨달았습니다. 예측 모델링 --> 검증 열 만들기에서 "K-겹 검증 열 만들기"를 사용할 수 있습니다.
Re: 원래 분포를 유지하면서 하위 집합 생성Tables=> Subset Platform에서 랜덤 샘플링 기능을 사용하여 서브세트를 지정하기만 하면 된다고 생각합니다. 비율이나 크기에 따른 랜덤 샘플링은 원래 테이블과 동일한 분포를 가진 데이터 테이블을 제공합니다.
Re: 원래 분포를 유지하면서 하위 집합 생성엄밀히 말해서, 원래와 동일한 분포를 원한다면 대체 샘플링이 필요합니다. 이는 리샘플링과 부트스트랩 방법의 기초입니다. Subset 명령은 대체 샘플링 없이 무작위 샘플링을 수행합니다. 필요한 것을 얻으려면 스크립트가 필요할 것 같습니다. 샘플링은 다음과 같이 무작위 서브스크립트를 계산하는 것을 기반으로 합니다.
subscript = J( sample size, 1, Random Integer( 1, N Row( dt ) )
이 벡터는 새 데이터 테이블에 데이터 열을 만드는 데 사용될 수 있습니다.
New Table( "Sample", New Column( "Data", Value( dt:originalColumn[subscript] ) ) );
Re: 원래 분포를 유지하면서 하위 집합 생성안녕하세요 @bbenny7 ,
데이터 테이블의 하위 집합을 올바르게 정의하고 싶지만, 열 기준으로 계층화하고 싶다는 비슷한 이유로 이 주제가 흥미로웠습니다. @dlehman1 님이 유효성 검사 열을 사용하여 관심 있는 열(들)을 기준으로 계층화하는 방법을 제안해서 이전에도 시도해 본 적이 있지만, 여러 데이터 테이블이 필요한 경우 다른 방식으로 하는 방법도 궁금했습니다. @Mark_Bailey 님 이 제안하신 방법을 시도해 보았지만, New Table() 함수의 JSL 코드를 두 줄로 나누어야 했습니다. 한 줄은 새 테이블을 정의하고, 다른 줄은 관심 있는 다른 데이터 테이블 열을 기준으로 값을 할당해야 했습니다. @dlehman1 님이 원래 작성하신 코드처럼 작동하지 않았습니다. 수정된 코드는 다음과 같이 작동했습니다.
Names Default To Here( 1 );
dt = Data Table( "originaldatatable" ); //assigns the original data table to the variable dt
subscript = J( samplesize, 1, Random Integer( 1, N Rows( dt ) ) ); //creates the random integer vector of length 'samplesize'
dt2 = New Table( "Sample", New Column( "Data" ) ); //creates new data table with column Data
dt2:Data << Set Values( dt:originalColumn[subscript] ); // assigns values to Data based on the row entries for the originalColumn
재밌는 작은 테스트로 For() 루프를 만들고 그 안에 아래 첨자 줄을 넣어(새로운 행 번호 집합을 생성하기 위해) 4개의 하위 집합을 생성하고 4개 집합의 분포를 비교했는데, 요약 통계가 모두 매우 유사했습니다.

비슷한 테스트를 했지만, 4개의 계층화된 검증 열을 만들고 각 열의 통계를 살펴보았습니다. N이 다른 이유는 Make Validation Column 플랫폼이 위에서 제가 무작위로 300을 선택한 것과 같은 비율을 생성하지 않기 때문입니다. 어쨌든 결과는 모두 매우 유사합니다.

어느 쪽이든 효과가 있고 원하는 곳으로 갈 수 있을 것입니다.
행운을 빌어요!,
디에스
Re: 원래 분포를 유지하면서 하위 집합 생성답변해 주셔서 감사합니다.
추가 기능이 필요하지 않다는 것을 깨달았지만 예측 모델링에서 "K-폴드 검증 열 만들기" --> 검증 열 만들기를 사용할 수 있습니다.