주어진 분포에 대한 무작위 하위 집합 선택안녕하세요 ...
주어진 정규 분포에 대한 데이터 열에서 무작위로 선택하려고 합니다. 주어진 분포는 데이터의 분포와 다릅니다.
Table Subset의 현재 옵션으로 이를 수행하는 쉬운 방법이 있습니까? 나는 나를 도울 수 있는 어떤 것도 볼 수 없었다.
또한 기본적으로 NormalDensity(X, mu, sigma)라는 공식을 사용하여 주어진 분포에 대해 "데이터"의 밀도를 플로팅했습니다.
그러나 나는 여전히이 공식에서 균일하게 말하고 무작위로 선택하여 내 결과가 주어진 분포에 최대한 가깝도록 말하는 방법을 모릅니다.
고마워. 지원에 감사드립니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택또한 무료 과정인 산업 문제 해결을 위한 통계적 사고(Statistical Thinking for Industrial Problem Solving)( https://www.jmp.com/en_us/online-statistics-course.html ). 통계를 배울 필요가 없을 수도 있지만 데모에서는 JMP에서 일반적인 분석을 수행하는 방법을 보여줍니다. 이러한 시연은 JMP가 통계 과정에서 얼마나 잘 할 수 있는지를 보여줄 뿐만 아니라 몇 가지 기본적인 데이터 조작 및 그래프 작성 기술을 보여줄 수 있다고 생각합니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택JMP 웹 사이트에서 시간을 보내는 것이 좋습니다. 홈페이지 상단에 메뉴 항목이 있는데, JMP 배우기 를 통해 JMP 사용 방법을 배우는 데 도움이 되도록 만든 많은 리소스 중 하나에 액세스할 수 있습니다. 학습을 위한 또 다른 영역은 디스커버리 서밋 에 있는 사이트 이벤트 메뉴. 예를 들어, 지난 몇 년 동안 John Sall의 기조 연설은 몇 가지 통찰력을 제공할 것입니다.
당신은 통계 과정을 가르치고 있습니까? 강사 전용 섹션이 여러 개 있습니다. 일부 자료는 학생들을 위한 과제로 오프로드할 수 있습니다.
버전 15에서 JMP가 복잡하고 정교하다는 점에 동의합니다. 최고의 기능 중 일부는 명확하지 않습니다. 새로운 도구를 많이 배우고 채택하는 것이 마음가짐입니다. 예를 들어, 제가 JMP를 가르치면 많은 신규 사용자가 JMP 데이터 테이블을 보고 "이건 또 다른 스프레드시트일 뿐이야."라고 생각합니다. 그 출발점은 좌절이 시작되는 곳입니다. (첫인상이 그런 건 아니지만, 흔한 일이다. BI는 MINITAB을 사용하기 때문에 통계 분석과 스프레드시트 분석의 차이점을 이해한다고 생각합니다.) 위에서 언급한 리소스는 JMP 사고 방식을 보여주기 위한 것이므로 JMP가 새로운 문제를 해결하는 데 어떻게 도움이 될지 빠르게 예상할 수 있습니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택나는 그것을 알고 있지만 내가 찾고 있던 것을 검색하면 이 대답을 얻었습니다.통계 과정을 JMP로 전환하는 것이 합리적인지 확인하려고 합니다.JMP가 직관적이지 않고 단순한 작업에 어렵다는 것이 점점 분명해지고 있습니다.간단한 샘플에 대한 답변도 간단하거나 직관적이지 않습니다.
지금까지 JMP에 대한 제 생각은 학습 곡선이 높지만 더 복잡한 통계 모델링이나 실험 설계를 수행하는 경우에는 그만한 가치가 있을 것입니다.그러나 R이나 SPSS와 같은 다른 제품에 비해 JMP에 이점이 있는지는 잘 모르겠습니다. JMP는 오늘날 전문가나 컴퓨터 프로그래머가 전문가나 컴퓨터 프로그래머가 사용하도록 설계한 많은 제품과 비슷하지만 해당 분야에 종사하지 않는 사람들은 상대적으로 접근하기 어렵습니다. 광범위한 사용자 기반을 고려하고 제공하는 적절한 작업을 수행하는 제품은 거의 없습니다.
아직 JMP를 포기하지 않았기 때문에 제 생각이 바뀔 수도 있지만 지금까지는 Minitab의 단순한 인터페이스에 감사하게 되었습니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택여기서 원래 요청은 다른 열의 단순한 무작위 샘플링이 아닙니다.
그것이 필요한 전부라면 다음을 사용할 수 있습니다. Col Shuffle() 함수 다른 열에서 임의로 선택하여 새 열을 생성합니다.

Re: 특정 분포에 대한 무작위 하위 집합 선택너 지금 농담하는 거지.다른 열에서 무작위 샘플을 가져와 별도의 열에 표시하는 것은 Minitab의 메뉴 선택 항목입니다.이에 대한 답변은 두 페이지의 토론과 수십 줄의 코드가 필요했습니다.JMP에서 간단한 작업이 어려운 이유는 무엇입니까?
Re: 특정 분포에 대한 무작위 하위 집합 선택제프
Ian의 원래 솔루션에 대한 수정은 완벽하게 작동했습니다. 이제 규정된 분포로 무작위 데이터를 추출할 수 있습니다. 이것을 Table Subsetting 아래의 옵션으로 보면 좋을 것 같습니다...
내 문제는 100% 해결되었습니다.
당신의 지원에 감사드립니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택그 접근법 @ian_jmp 발견은 내가 시도한 첫 번째 일이었지만 Ian이 내가 부딪힌 몇 가지 단점을 극복할 방법을 찾았기 때문에 너무 일찍 포기했습니다. 좋은 작업.
행의 리샘플링을 제거하는 것과 관련하여 Ian이 다음 행을 추가할 것을 제안했다고 생각합니다.
bv[Loc Min( dist )] = .;
for() 루프에. 따라서:
Names Default To Here( 1 );
// Make a big table
dt1 = New Table( "Big",
New Column( "Values", Numeric, Continuous, Formula( Random Uniform( -3, 3 ) ) ),
New Column("Row", Formula(Row()))
);
dt1 << addRows( 40000 );
dt1 << runFormulas;
Column( dt1, "Values" ) << deleteFormula;
// Make a small table
dt2 = New Table( "Small",
New Column( "Values", Numeric, Continuous, Formula( Random Normal( 0, 1 ) ) )
);
dt2 << addRows( 40 );
dt2 << runFormulas;
Column( dt2, "Values" ) << deleteFormula;
// For each value in dt2, find a value in dt1 that's closest
bv = Column( dt1, "Values" ) << getValues;
sv = Column( dt2, "Values" ) << getValues;
selectedRows = J( N Row( sv ), 1, . );
For( i = 1, i <= N Row( sv ), i++,
dist = (bv - sv[i]) ^ 2;
selectedRows[i] = Loc Min( dist );
//the line below prevents rows from the "Big" table from being re-sampled
bv[Loc Min( dist )] = .;
);
// Subset dt1
dt3 = dt1 << subset( rows( selectedRows ), LinkToOriginalDataTable( 1 ) );
// Look at the distributions
New Window( "Compare Distributions",
H List Box(
dt1 << Distribution( Continuous Distribution( Column( :Values ) ) ),
dt2 << Distribution( Continuous Distribution( Column( :Values ) ) ),
dt3 << Distribution( Continuous Distribution( Column( :Values ) ) )
)
);
Re: 특정 분포에 대한 무작위 하위 집합 선택죄송합니다. 휴가 때문에 며칠 동안 컴퓨터를 사용할 수 없습니다. 하지만 다른 사람이 할 수 있다고 확신합니다. . .
Re: 특정 분포에 대한 무작위 하위 집합 선택이안
나는 ~46K의 하위 샘플 데이터를 얻는 것을 목표로 하고 있었고 그 중 44K는 중복되었습니다.
당신의 제안에 대해 "bv"에 대한 줄을 저에게 써주시겠습니까?
다시 감사합니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택네, 이것이 궁금했습니다. 지금은 가능하지만 중복을 원하지 않는 경우 누락된 '.'으로 발견된 벡터 'bv'의 요소를 설정하는 추가 라인을 추가하면 됩니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택이안,
한 가지 질문하는 것을 잊었습니다. 선택이 원본 테이블에서 고유하게 이루어졌습니까, 아니면 하위 테이블에 중복 선택이 있을 가능성이 있습니까?
고마워
Re: 특정 분포에 대한 무작위 하위 집합 선택이안,
이것은 훌륭합니다. 나는 비슷한 접근 방식을 생각했지만 기본 스크립트 지식으로 인해 그렇게 할 수 없었습니다.
나는 그것을 내 데이터에 적용할 수 있었고 내가 원하는 것을 얻고 있다. 나는 이것을 당신의 스크립트에서 할 수 있어야 하는 2 매개변수 분포 선택으로 확장할 수 있습니다.
당신의 지원에 감사드립니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택제프,
노력해 주셔서 감사합니다.
귀하의 제안은 약간의 기회가 있었습니다. 나는 그것을 내 데이터에 적용했고 불행히도 선택이 무작위이기 때문에 작동하지 않았습니다. 약 3000회 반복 실행하고 10시간 후에 중지했습니다. 데이터 평균의 움직임은 미미했습니다.
이것은 간단한 기술이 아닙니다 (이름이 Ian이 아닌 한) .. 더 합리적인 방향에서 임의로 끌어오려고 시도하는 일종의 옵티마이저를 상상할 수 있습니다. GA는 과잉일 수 있지만 확실히 이러한 종류의 최적화를 수행할 수 있습니다.
통계적 관점에서 이것은 내가 하는 일에 완벽하게 괜찮습니다. 400+K는 자산의 빅데이터를 의미합니다. 조사 중인 하위 그룹과 유사한 자산을 찾으려고 합니다.
다시 한 번 감사드립니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택만약에 " 결론적으로, 선택한 하위 샘플의 분포가 주어진 분포에 최대한 가깝도록 400K+ 행에서 여러 하위 샘플을 하위 선택해야 합니다. " 당신이 원하는 것이라면, 이런 종류의 접근 방식을 사용할 수 있습니까, 아니면 그것에 가까운 것을 사용할 수 있습니까?
NamesDefaultToHere(1);
// Make a big table
dt1 = NewTable("Big", NewColumn("Values", Numeric, Continuous, Formula(RandomUniform(-3,3))));
dt1 << addRows(40000);
dt1 << runFormulas;
Column(dt1, "Values") << deleteFormula;
// Make a small table
dt2 = NewTable("Small", NewColumn("Values", Numeric, Continuous, Formula(RandomNormal(0,1))));
dt2 << addRows(40);
dt2 << runFormulas;
Column(dt2, "Values") << deleteFormula;
// For each value in dt2, find a value in dt1 that's closest
bv = Column(dt1, "Values") << getValues;
sv = Column(dt2, "Values") << getValues;
selectedRows = J(NRow(sv), 1, .);
for(i=1, i<=NRow(sv), i++,
dist = (bv - sv[i])^2;
selectedRows[i] = LocMin(dist);
);
// Subset dt1
dt3 = dt1 << subset(rows(selectedRows), LinkToOriginalDataTable(1));
// Look at the distributions
NewWindow("Compare Distributions",
HListBox(
dt1 << Distribution( Continuous Distribution( Column( :Values ) ) ),
dt2 << Distribution( Continuous Distribution( Column( :Values ) ) ),
dt3 << Distribution( Continuous Distribution( Column( :Values ) ) )
)
);
Re: 특정 분포에 대한 무작위 하위 집합 선택
목적에 따라 이와 같은 하위 집합을 얻는 것은 통계적으로 의심스러울 수 있지만 이를 수행하는 한 가지 방법은 Resample Freq()를 사용하여 무작위 샘플을 생성한 다음 해당 샘플이 원하는 특성을 충족하는지 확인하여 무차별 대입하는 것입니다. 다음은 원래 데이터를 시뮬레이트하기 위해 테이블을 생성한 다음 다시 샘플링하고 배포 플랫폼을 사용하여 샘플을 테스트하는 프로토타입입니다.
dt = New Table( "original",
Add Rows( 1000 ),
//:parameter will have a random normal distribution with mean=0
//and a stddev=1
New Column( "parameter",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Random Normal() )
),
New Column( "Row", Numeric, "Continuous", Format( "Best", 12 ), Formula( Row() ) ),
//The Resample Freq() function generates a frequence count for sample with replacement
//the .05 argument is the sample rate, i.e. we want a sample size of 5% of the original table
New Column( "Resample Freq",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Resample Freq( 0.05 ) ),
)
);
//Generate a distribution of :parameter using the resample frequency as a Freq column to get
//Automatic Recalc will cause the Distribution to rerun when the Resample Freq column is re-evaluated
//to get a new sample
New Window( "Dist comparison",
H List Box(
dt << Distribution( Continuous Distribution( Column( :parameter ) ) ),
dist = dt << Distribution(
Automatic Recalc( 1 ),
Freq( :Resample Freq ),
Continuous Distribution( Column( :parameter ) )
)
)
);
//set the minimum mean value we will accept for the subsample
target_mean_min = .249;
//set the minimum mean value we will accept for the subsample
target_mean_max = .251;
//how many iterations are we willing to try before giving up?
max_iter = 1000;
iter = 1;
While(
//Report( dist )[Number Col Box( 2 )][1] is the mean value from the Distribution report
!(target_mean_min <= Report( dist )[Number Col Box( 2 )][1] <= target_mean_max) &
iter <= max_iter,
//get a new sample
Column( "Resample Freq" ) << eval formula;
iter++;
);
If(
//check to see if we exited because we hit max_iter or got a good sample
iter > max_iter & !(target_mean_min <= Report( dist )[Number Col Box( 2 )][1] <=
target_mean_max)
,
Print( "No result in " || Char( max_iter ) || " random samples." ),
//got a good sample so get the subset
dt << select where( :resample freq != 0 );
dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
);
Re: 특정 분포에 대한 무작위 하위 집합 선택나는 여기서 자유로운 생각을 하고 있지만 아마도 당신이 시도할 수 있는 것은 배포 플랫폼을 사용하여 분포 모양을 결정한 다음 데이터를 정규 분포로 변환하는 것입니다.그런 다음 레벨을 출력한 다음 층화를 사용하여 부분 집합화를 수행합니다.그냥 생각.
Re: 특정 분포에 대한 무작위 하위 집합 선택짐, 당신의 제안에 감사드립니다.
그러나 귀하의 제안에는 주어진 분포에 따라 강제로 선택하는 방법이 없습니다. 그래서 그것은 내가 찾고있는 것을 생산하지 않을 것입니다. 유효성을 검사하기 위해 단계를 따랐고 원본과 매우 유사한 dist를 생성했습니다.
아마도 나는 명확한 방식으로 설명하지 않을 것입니다.
400k+ 행 XN 열의 데이터(거대한 행렬)가 있습니다. 인수를 위해 N 매개변수 중 하나를 "X"라고 부르는 경우.
이 데이터에서 X의 분포 - X.dist1이라고 합니다.
Xagain이 있는 두 번째 데이터 세트가 있고 이번에는 X.dist2가 있습니다.
X.dist1은 너무 멀지는 않지만 X.dist2와 다릅니다.
첫 번째 데이터 세트(400k+)에 많은 데이터가 있다는 사실을 감안할 때 선택한 데이터 X 분포가 X.dist2에 가장 근접하도록 1에서 데이터 세트를 하위 선택하려고 합니다.
따라서 정규 분포 특성을 지정할 수 있는 Table - Subset 또는 수식을 사용한 다음 Table-subset을 사용하여 몇 가지 기능을 찾고 있었습니다.
수식의 경우 원하는 X.dist2에 대해 dataset1의 밀도를 입력합니다.
그러나 이제 결과 분포가 ~ X.dist2가 되도록 수식 출력에서 균일한 무작위 샘플링 방법이 필요합니다.
또는 다른 방법으로 ...
Table-Subset을 사용하려는 경우 솔루션은 가져올 매개변수에서 정규 분포를 지정해야 합니다.
또는 매개변수에서 균일한 무작위 선택을 찾아야 합니다(수식 접근).
Re: 특정 분포에 대한 무작위 하위 집합 선택간단한 2단계 프로세스를 수행하면 원하는 것을 얻을 수 있다고 생각합니다.
1. 해당 열에 대한 배포 플랫폼을 엽니다.그 다음에
저장==>레벨 번호.
이렇게 하면 실제 데이터에서 직접 가져온 분포로 새 열이 생성됩니다.
2. 데이터의 하위 집합을 만들고 다음을 지정합니다.
무작위 - 샘플링 속도:
그리고 또한
위 단계에서 생성된 새 레벨 열을 기준으로 층화
Re: 특정 분포에 대한 무작위 하위 집합 선택내 실제 목표는 이미 사용 가능한 두 데이터 세트의 N(기타) 매개변수를 비교하는 것입니다. 가상의 분포를 만들려는 것이 아닙니다. (아마도 귀하의 제안을 오해하고 있습니다).
주어진 분포는 다른 사람에게 영향을 미칠 수 있는 중요한 매개변수에 대한 제약 조건입니다. 이 영향력 있는 매개변수의 영향을 최소화하기 위해 "데이터"에서 주어진 분포로 유사한 분포를 가진 자산을 선택하려고 합니다. 이 문맥에서 "분포"는 단일 매개변수에만 적용되며 다중에는 적용되지 않습니다.
결론적으로, 선택한 하위 샘플의 분포가 주어진 분포에 최대한 가깝도록 400K+ 행에서 여러 하위 샘플을 하위 선택해야 합니다.Re: 특정 분포에 대한 무작위 하위 집합 선택그렇군요... 원래 게시물을 완전히 이해하지 못했습니다. 내 제안은 원래 분포와 매우 유사한 매개 변수를 가진 분포를 반환합니다. 원하는 매개변수 추정치로 임의 변수를 관찰하려는 경우 해당 매개변수로 열을 만들고 계속 진행할 수 없는 이유는 무엇입니까? 물론 특정 관찰이 반드시 원래 열에 있는 것은 아니지만 분석적으로 또는 실질적으로 달성하려는 것에 영향을 미칠 수도 있고 그렇지 않을 수도 있습니다. 정확한 일치는 아니지만 적어도 그럴듯한 관찰이 될 것입니다.
Re: 특정 분포에 대한 무작위 하위 집합 선택Peter .. 당신의 제안에 감사드립니다.
그러나 그것은 작동하지 않는 것 같습니다.
내 원본 데이터의 평균/stdev는 매우 큰 샘플(400K 이상)에서 12816 및 1726입니다.
14300 및 2050에 가까운 하위 샘플을 선택 취소하려고 합니다.
나는 공식(즉, 데이터 wrt 14300, 2050의 밀도)에 대한 귀하의 제안을 시도했고 이 임의의 dist가 밀도 중에서 균일하게 선택되도록 강제할 수 없다면 필요한 것을 얻을 수 없다고 생각합니다. 사실 하위 샘플링은 원래 배포판에서 예상대로 나왔습니다.Re: 특정 분포에 대한 무작위 하위 집합 선택샘플링하려는 모집단 열이 있으면 다음 워크플로우를 사용해 보십시오.
1. 샘플링할 열을 선택합니다.
2. JMP 기본 메뉴 모음에서 행 -> 행 선택 -> 무작위 선택 ->을 선택한 다음 샘플 크기 또는 샘플링 속도를 선택합니다.
이렇게 하면 원본 데이터 테이블에서 선택된 열이 반환되고 여기에서 Row Subset이 데이터 테이블을 제공합니다.