코드는 다른 샘플에서는 잘 작동하지만 일부 샘플에서는 그래프가 수렴되지 않는 것으로 나타납니다.
"더 느슨한 수렴 기준을 고려하거나 "반복 옵션"에서 "현재 추정치 수락"을 선택하십시오. 실패: 목적 함수를 줄일 수 없습니다.
코드는 아래와 같으며, 잘 동작하지 않는 샘플을 첨부합니다.
Names Default To Here( 1 );
dt= currentdatatable();
New Column( "Model",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Parameter(
{p = 0.29, x0 = 15, m0 = 1.2, x1 = 30, m1 = 5},
p * (1 - Exp( -(X_mm / x0) ^ m0 )) + (1 - p) * (1
-Exp( -(X_mm / x1) ^ m1 ))
)
),
);
nlin = dt << Nonlinear(
SendToByGroup( Bygroup Default ),
Y( Ln_C ),
X( :Model ),
Iteration Limit( 1000 ),
Unthreaded( 1 ),
QuasiNewton BFGS,
//Newton,
Finish,
By( Sample_ID ),
);
예제를 제공해 주셔서 감사합니다. 문제를 진단할 때 유용합니다.
저는 대화식으로 비선형을 시작하고 각 샘플에 대한 모델을 적합시켰습니다. 같은 공지가 보이네요. 이는 수렴을 결정하는 데 사용한 기준을 기반으로 합니다. 어느 기준도 만족하지 못했습니다. 반면에 당신은 잘 맞습니다! SSE는 상대적으로 작습니다.
데이터 문제나 부적절한 모델은 아니라고 생각합니다. 실제로 재설정을 클릭한 다음 이동을 클릭했습니다. 모든 샘플에 대해 두 번째로 Gradient 기준으로 수렴되었습니다.
감사합니다. Reset and Go를 클릭하면 데이터가 Gradient 기준에 따라 수렴됩니다. 하지만 이 출력을 추가 분석에 사용하고 싶었기 때문에 그래프를 재설정하는 대신 스크립트에서 이를 자동화하고 싶다면 어떻게 해야 할까요? 그리고 이 샘플들만 첫 번째 시도에서 수렴되지 않으므로 스크립트를 사용하여 이를 자동화하는 방법은 무엇입니까?
수렴 실패로 인해 단일 Reset and Go가 필요한 경우 스크립트는 각 샘플에 연속적으로 메시지를 보낼 수 있습니다. Reset and Go 메시지는 스크립팅 인덱스를 참조하세요.
