在使用TMB进行优化时,这个outermgc消息是什么?

时间:2017-03-17 05:46:19

标签: r tmb

在使用TMB生成目标函数和渐变并调用optim函数后,我在控制台中打印了一系列报告,其形式似乎是“外部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 

似乎较小的数字表示更快的收敛和更好的收敛结果。但我不完全确定这些是什么,所以知道为了诊断算法的收敛性质会很好。

1 个答案:

答案 0 :(得分:3)

缩写mgc代表“最大梯度分量”。

对于每个参数,TMB估计一个梯度(偏导数),经过优化后,您可以通过运行obj $ gr(opt $ par)来获得。所有这些都应该尽可能接近零。因此,为了使模型没有问题,最高或最高的模型(离零最远)应该仍然很低。您会注意到在使用sdreport()时,还会给出最终的最大梯度组件。默认情况下,当使用nlminb / optim时,每次迭代都会计算和打印这些渐变(除非在makeADfun中为silent = TRUE)。