확률 분포의 피크안녕
Johnson Su 분포에 가장 잘 맞는 데이터 세트가 있는데 이 분포의 피크 값을 추정할 수 있는 방법이 있는지 궁금합니다. 중앙값이나 평균과는 상당히 다른 하나의 피크만 있습니다. 이 "모드"라고 부르는 것이 여기에서 가능한 최상의 솔루션일 수 있지만 이 점을 어떻게 추정합니까?
Re: 확률 분포의 정점그룹화된 데이터 분배를 위해 프로파일 옵션을 확장할 수 있습니까? N 그룹의 경우 그룹의 각 항목 분포에 해당하는 모드를 가져와야 합니다. 또는 매번 그룹별로 하위 집합을 지정한 다음 프로파일러 옵션을 사용해야 합니다. 나는 col groupby를 사용한 다음 적합했지만 각 그룹 구성원이 아닌 전체 데이터 세트에 대해 단일 값을 제공하는 것처럼 보입니다.
Re: 확률 분포의 정점작동하는 프로파일러를 사용하는 솔루션이 있습니다. 작동하지 않는 스크립트에 대해 이 문서에서는 최대화 및 최소화 기능에 대한 일부 변경 사항을 강조합니다. 지적해 준 JMP 기술 지원팀에게 감사드립니다!
https://community.jmp.com/t5/JMPer-Cable/Minimize-and-Maximize-Functions-in-JSL/ba-p/36355
Re: 확률 분포의 정점Laura의 방법이 더 깔끔합니다! 그리고 오류가 훨씬 적습니다. 방법을 알아낼 수 있다면 항상 JMP가 작업을 수행하도록 하는 것이 가장 좋습니다.
Re: 확률 분포의 정점제가 JMP를 좋아하는 이유 중 하나는 종종 문제를 해결할 수 있는 다양한 방법을 제공한다는 것입니다.데이터에 맞는 Johnson SU 밀도의 모드를 찾기 위한 이전의 모든 제안은 훌륭하지만 프로파일러를 사용하는 옵션이 하나 더 있습니다.
분포를 사용하여 Johnson Su 분포를 데이터에 맞추면 다음을 선택할 수 있습니다. 밀도 공식 저장 ~로부터 존슨 수 장착 메뉴.이렇게 하면 Johnson Su Density 공식이 데이터 테이블의 열에 저장됩니다.

다음으로 다음을 선택하여 프로파일러를 열 수 있습니다. 그래프>>프로파일러 .밀도 공식을 다음과 같이 캐스팅하십시오. Y, 예측 공식 확인을 클릭합니다.다음으로 켜기 바람직함 함수 ~에서 예측 프로파일러 메뉴.그 후에 당신이 선택 바람직함을 극대화하다 ~로부터 예측 프로파일러 메뉴.이렇게 하면 이 데이터에 대한 Johnson Su 밀도의 모드(최대)를 찾을 수 있습니다.

Re: 확률 분포의 정점매우 감사합니다! 
Re: 확률 분포의 정점이 열의 데이터에는 문제가 없습니다. 다음은 Ian의 솔루션에서 차용하여 매개변수 추정치를 수동으로 입력할 필요가 없는 새 버전입니다.
Names Default to Here( 1 );
dist = Current Data Table() << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :T10_100 ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Fit Distribution( Johnson Su )
)
);
estimates = Report( dist )["Fitted Johnson Su"][NumberColBox(1)] << Get As Matrix;
dist expr = Substitute(
Expr(
Johnson Su Density(
q, // quantile
ggg, // gamma or first shape parameter
ddd, // delta or second shape parameter
ttt, // theta or location parameter
sss // sigma or scale parameter
)
),
Expr( ggg ), estimates[1],
Expr( ddd ), estimates[2],
Expr( ttt ), estimates[3],
Expr( sss ), estimates[4]
);
peak height = Maximize( dist expr, { q( 0.01, 70 ) } );
difference = Minimize( peak height - dist expr, { q( 0.01, 70 ) } );
Print( "The peak location is " || Char( q ) );
귀하의 데이터로 다음 결과를 얻습니다.


따라서 데이터나 스크립트가 아니라 JMP(설치)여야 합니다.
Re: 확률 분포의 정점최적화는 샘플 데이터 테이블에서도 작동하지 않습니다. 또한 내 데이터와 완전히 독립적인 Ian의 스크립트를 사용했습니다. 따라서 지적하신 대로 설치에 문제가 있을 것입니다. 지금 JMP를 다시 설치해야 합니까?
어쨌든 데이터 열을 첨부하고 있습니다.
Re: 확률 분포의 정점데이터 테이블이나 JMP 설치를 떠나도록 Ian의 스크립트나 내 스크립트에 아무 문제가 없는 것으로 보입니다. 데이터 테이블부터 시작하겠습니다. 당신은 그것을 공유할 수 있습니까? 그렇다면 사용한 데이터 열을 식별하십시오. 실제로 문제를 일으키는 데이터 열만 필요합니다. 그것이 당신에게 더 나은 경우 나머지를 삭제할 수 있습니다.
감사해요!
Re: 확률 분포의 정점귀하의 스크립트와 내 데이터 세트에는 작동하지 않았습니다. Ian의 대본과 동일합니다.
"최적화 실패: 실패: 목적 함수를 감소시킬 수 없음".
그래서 그냥 Bill의 솔루션으로 진행했지만 내 문제에 대한 일시적인 수정일 뿐이라고 생각합니다.
Re: 확률 분포의 정점내 솔루션 스크립트가 귀하가 게시한 원래 예제에서 작동하지 않았거나(나에게 그랬듯이) 새 데이터 세트에서 작동하지 않았음을 말하는 것입니까? 후자의 경우 데이터를 공유할 수 있습니까?
Ian의 대본을 사용해 보셨습니까?
Re: 확률 분포의 정점Mark의 방법은 깔끔합니다. 함수를 직접 사용하는 대안은 다음과 같습니다.
NamesDefaultToHere(1);
ClearLog();
// Make some representative data
dt = NewTable("Johnson Su", NewColumn("Data", Numeric, Continuous, Formula(Random Johnson Su( 5, 2, 1, 1 ))));
dt << addRows(50);
// Fit the data
dist = dt << Distribution(Continuous Distribution( Column( :Data ), Fit Distribution( Johnson Su ) ));
// Get the fitted parameters
params = Report(dist)[NumberColBox(3)] << get;
gamma = params[1]; // Shape
delta = params[2]; // Shape
theta = params[3]; // Location
sigma = params[4]; // Scale
// http://www.mathwave.com/articles/johnson_su_distribution.html
// f(x) = delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 );
// where:
// z = (x - eta)/lambda;
// and:
// delta > 0 lambda > 0
jsu = Expr(delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 ) );
SubstituteInto(jsu, Expr(z), Expr((x - eta)/lambda));
// Use the fitted parameter values
// Note the change in parameter names! 'lambda' -> 'sigma' and 'eta' -> 'theta'
SubstituteInto(jsu,
Expr(gamma), Eval(gamma),
Expr(delta), Eval(delta),
Expr(eta), Eval(theta),
Expr(lambda), Eval(sigma)
);
// Get upper and lower bounds for the optimisation (either side of the (assumed) single peak)
vals = Column(dt, "Data") << getValues;
low = Quantile(0.25, vals);
high = Quantile(0.75, vals);
// Do the maximization
Maximize(jsu, {x(low, high)}, << Tolerance(10^-10), << showDetails(true));
Print(x);
('눈으로' 작동하는 것 같지만 물론 테스트는 없습니다).
Re: 확률 분포의 정점응답해 주셔서 감사합니다. 그러나 어떻게 든 그것은 나를 위해 작동하지 않습니다. 그것은 말한다
"최적화 실패: 실패: 최대 반복 횟수 초과"
저는 JMP 12를 사용하고 있는데 최적화 프로그램의 기능이 제한적일 수 있습니다.
Re: 확률 분포의 정점추가하기 만하면됩니다.
Mark의 방법은 실제로 최고값을 얻는 가장 좋은 방법이지만 예상 값을 빠르게 얻으려면 곡선을 맞춘 다음 도구 메뉴나 메뉴 표시줄에 있는 JMP 십자형 도구를 사용할 수 있습니다. 도구를 클릭한 다음 피크를 가장 잘 나타내는 지점에 십자선 기호를 놓으면 값이 팝업됩니다. JMP 13을 사용하는 경우 가까이 다가가는 데 도움이 되는 십자선 도구가 포함된 돋보기가 제공됩니다.
HTH
Re: 확률 분포의 정점불행히도 배포 플랫폼은 분석 기능에 대한 모드를 제공하지 않습니다. Johnson 분포 모드에 대한 공식도 검색했지만 찾지 못했습니다.
또 다른 접근 방식은 JMP 수치 최적화 프로그램을 사용하여 솔루션을 검색하는 것입니다. 내 접근 방식은 최대화() 피크에 해당하는 적합 분포의 최대 밀도를 찾은 다음 최소화() 분위수를 찾는 함수는 최대값에 가장 가까운 확률을 생성합니다. 다음은 수행하려는 작업과 일치하는 단계별 솔루션입니다.
- Sample Data Directory에서 사출 성형 예제를 열었습니다.
- Shrinkage 데이터 열에서 Distribution 플랫폼을 열었습니다.
- Johnson SU 매개변수 추정치를 얻기 위해 Johnson SU 분포를 적합했습니다.
- 피크 위치를 찾기 위해 위에서 설명한 두 단계로 스크립트를 작성했습니다.
적합 분포는 다음과 같습니다.

. 스크립트는 다음과 같습니다.
peak height = Maximize(
Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
difference = Minimize(
peak height - Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
Print( "The peak location is " || Char( q ) );
추정치는 두 번 사용되는 함수 호출에 복사됩니다.
다음은 로그의 결과입니다.

모든 메시지에 놀라지 마십시오. 잘 작동했습니다! 하단에서 결과를 볼 수 있습니다.