在用TMB生成目标函数和梯度,并调用optim函数后,我在控制台中得到了一系列打印的报告,其形式似乎是“get mgc:":
outer mgc: 56.54273
outer mgc: 56.51064
outer mgc: 56.96065
outer mgc: 57.13384
outer mgc: 29.01959
outer mgc: 27.08267
outer mgc: 25.99866
outer mgc: 25.79068
outer mgc: 25.58621
outer mgc: 21.91722
outer mgc: 21.73952
outer mgc: 21.56449
outer mgc: 21.52924
outer mgc: 21.52189
outer mgc: 21.19551
outer mgc: 20.7331
outer mgc: 16.39087
outer mgc: 11.35111
outer mgc: 10.61466
outer mgc: 6.748524
outer mgc: 1.420802
outer mgc: 0.1197647 似乎较小的数字表示更快的收敛和更好的收敛结果。但我不能完全确定这些是什么,所以为了诊断算法的收敛特性,知道这一点是很好的。
发布于 2017-08-04 02:28:46
缩写mgc代表“最大梯度分量”。
对于每个参数,TMB估计一个梯度(偏导数),在优化之后,您可以通过运行obj$gr(opt$par)获得该梯度。所有这些都应该尽可能接近于零。因此,对于正常的模型,最高或最大值(离零最远)应该仍然很低。您会注意到,在使用sdreport()时,还会给出最终的最大梯度分量。在使用nlminb/optim时,默认情况下也会为每次迭代计算和打印这些梯度(除非makeADfun中的silent=TRUE )。
https://stackoverflow.com/questions/42850082
复制相似问题