Что это за сообщение 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.