비선형 맞춤 - 성공 여부를 확인하는 방법은 무엇입니까?개요:
비선형 적합이 성공했는지 확인하려면 어떻게 해야 합니까?
(실제 데이터가 항상 수렴되는 것은 아니며 자동화/테스트/제품 문제에 대한 수동 검토가 필요할 수 있습니다.)
세부 사항:
비선형 적합이 수렴하지 못한 후 응답을 스크립팅하고 싶습니다.적합하지 않으면 다른 방법으로 처리하거나 결국 수동 검토를 위해 라벨을 지정해야 합니다. (저는 모집단을 샘플링한 다음 각 부분에 대해 비선형 적합을 수행합니다.일반적으로 수렴에 실패하면 어딘가에 테스트 문제가 있는 것입니다. 나는 실제로 수렴 기준을 느슨하게 하고 싶지 않다.)
('실패' 메시지: "실패: 목적 함수를 감소시킬 수 없습니다.")

Numeric Derivatives Only에서 수정된 스크립트(도움말 > 스크립팅 색인 > "<<비선형")
(현재 JMP 15.2.1 실행 중)
Names Default To Here( 1 );
dt = Open(
"$SAMPLE_DATA/Nonlinear Examples/US Population.jmp"
);
// Random, intentionally divergent, formula on this dataset
dt << New Column( "Random", Numeric, Formula( Random LogLogistic(5) ) );
dt << New Column( "FancyPredictionFormula",
Numeric,
Continuous,
Formula(
Parameter(
{Rth0 = 735, n = 0.5},
(:year / :pop) * ((1 - ((n - 1) * :pop * Rth0) / (:year
* (300 / :year) ^ n)) ^ (-1 / (n - 1)) - 1)
)
)
);
nonlinear = dt << Nonlinear(
Y( :Name( "Random" ) ),
X( :Name("FancyPredictionFormula") ),
Expand Intermediate Formulas( 1 ),
Numeric Derivatives Only( 1 ),
QuasiNewton SR1,
Interation Limit(50),
Finish,
Plot( 0 ),
Confidence Limits,
Save Estimates
);
// How to check if nonlinear fit succeeded?
이상적인.
성공 또는 실패를 나타내는 어딘가에 비선형 적합 플랫폼에 의해 반환된 bool 상태 변수가 있다면 그것이 성공을 확인하는 이상적인 방법이 될 것이라고 생각합니다.
대안 1.
또한 데이터를 표로 만들거나 요약하여 모든 : 이름 ( "FancyPredictionFormula" ) 값은 0입니다.(적합이 실패하면 값이 0인 것 같습니다.)
대안 2.
XML을 확인하고 '실패' 메시지를 읽는 방법이 있을 것입니다.
당신의 시간과 배려에 감사드립니다.
- 오브리
스크립팅Re: 비선형 맞춤 - 성공 여부를 확인하는 방법은 무엇입니까?다음은 대안 2a(보고서에서 단어 스크랩)를 사용하는 접근 방식입니다. 처음 두 줄은 실제 작업을 수행하고 세 번째 줄은 정보로 수행할 작업에 대한 간단한 예일 뿐입니다. 당신은 아마도 이 부분에 대해 다른 것을 염두에 두고 있을 것입니다.
// How to check if nonlinear fit succeeded?
r = nonlinear << report;
alltext = r[Outline Box("Control Panel")] << get text;
if (contains(alltext, "Cannot Decrease"), caption ("Failed: Cannot Decrease ..."));Re: 비선형 맞춤 - 성공 여부를 확인하는 방법은 무엇입니까?그렇게 하겠습니다.고마워요 제드!
Re: 비선형 맞춤 - 성공 여부를 확인하는 방법은 무엇입니까?텍스트가 성공이 아닌 다른 것인지 확인하는 것이 더 나은지 궁금합니다.
If( Not( Contains( alltext, "Converged" ) ),
// trap failure
,
// proceed after success
);
Re: 비선형 맞춤 - 성공 여부를 확인하는 방법은 무엇입니까?당신은 내가 그것으로 향하고 있는 곳에 더 가깝습니다.
나는 다음과 함께 일했습니다.
if (contains(alltext, "Failed"), caption ("Failed: Do additional action now ..."));모든 것을 포괄하지만 실패 이유를 구체적으로 처리하기 위해 더 많은 case 문(또는 여러 'if'를 추측)을 추가하는 것을 고려하고 있습니다.</CODE></P><P><CODE class=" language-jsl">
예를 들어 다음과 같은 실패 이유를 발견하면 더 높은 반복 횟수로 다시 실행할 수 있습니다.
contains(alltext, "Maximum Iteration Exceeded");
진정한 동기는 '대부분의' 부분이 수치적 접근 방식으로 수렴되지만 일부는 분석이 필요한 것 같습니다.이 원인이 무엇인지 잘 모르겠습니다.수렴 기준?그러나 '수정'은 다음과 같이 수치 미분 없이 다시 실행하는 것입니다.
nonlinear = dt << Nonlinear(
Y( :Name( "Random" ) ),
X( :Name("FancyPredictionFormula") ),
Expand Intermediate Formulas( 1 ),
Newton,
Finish,
Plot( 0 ),
Confidence Limits,
Save Estimates
);잡은 후:
contains(alltext, "Cannot Decrease Objective Function");
Re: 비선형 맞춤 - 성공 여부를 확인하는 방법은 무엇입니까?수렴 실패의 일반적인 원인은 시작 매개변수 값입니다. 사용 가능한 경우 도메인별 휴리스틱을 사용하여 초기화하는 것으로 충분합니다.