Что это за сообщение externalmgc при оптимизации с помощью TMB?

После создания целевой функции и градиента с помощью TMB и вызова optim функция, я получаю последовательность отчетов, напечатанных в моей консоли, которая имеет вид "external 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 ответ

Решение

Аббревиатура mgc обозначает "максимальный градиентный компонент".

Для каждого параметра TMB оценивает градиент (частную производную), который после оптимизации вы можете получить, запустив obj$gr(opt$par). Все они должны быть как можно ближе к нулю. Таким образом, чтобы модель была в порядке, самая высокая или максимальная (самая дальняя от нуля) должна быть низкой. Вы заметите, что при использовании sdreport() также указывается окончательный компонент максимального градиента. Эти градиенты по умолчанию также рассчитываются и печатаются (если не указано значение TRUE в makeADfun) для каждой итерации при использовании nlminb/optim.

Другие вопросы по тегам