概述:
如何检查非线性拟合是否成功?
(真实数据并不总是收敛,可能需要人工审查自动化/测试/产品问题。)
细节:
我想在非线性拟合无法收敛后编写响应脚本。如果拟合失败,我需要以其他方式处理,和/或最终标记以供人工审查。 (我正在对总体进行抽样,然后对每个部分进行非线性拟合。一般来说,如果收敛失败,那是某处出现了测试问题;我实际上并不想放松收敛标准。)
(“失败”消息:“失败:无法降低目标函数”)

仅从数值导数修改脚本(帮助>脚本索引>“<<非线性”)
(当前运行 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。
我还可以对数据进行制表或汇总,看看是否所有:姓名( “花式预测公式” )值为零。(如果拟合失败,值似乎为 0)。
备选方案 2。
可能有一种方法可以检查 XML 并读取“失败”消息。
感谢您的时间和考虑。
-奥布里