Как интерпретировать вывод mle () trace = 6 и почему процедура mle () останавливается после 101 итерации в R? - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь оценить семь ограниченных параметров с помощью функции mle (), используя метод L-BFGS-B в R. Чтобы выяснить, почему я получаю ошибку non-finite finite-difference value [2], я включаю control = list(trace = 6) в mle ( ), надеюсь, узнать больше о причинах ошибки.

К сожалению, я не очень хорошо понимаю результаты трассировки, что делает результат неожиданным для меня: программа, кажется, просто останавливается после 101 итерации, не давая мне правильная причина.

Кто-нибудь знает почему?

Я полагаю, что семь значений X, представленных в trace = 6, являются значениями параметров, к которым процедура mle приблизилась до этой итерации. Вложение этих значений в мою функцию логарифмического правдоподобия дает мне то же значение, которое указано в разделе «окончательное значение»: -152.449285. Когда я вменяю семь значений X из итерации 97, я получаю такую ​​же логарифмическую вероятность -152,449285.

Есть две вещи, которые, кажется, выделяются. Во-первых, второе значение X, 0,999, является точно верхним пределом второго параметра, который я оцениваю. Во-вторых, второе значение G кажется относительно большим при -412,172 по сравнению с другими значениями G. Что именно указывает G? Вторые значения X и G были такими на протяжении многих итераций. Что-нибудь из этого дает мне подсказку, как я могу потенциально сделать оценку? Заранее спасибо!

Поскольку мой вопрос касается интерпретации / интуиции результатов, я воздержался от приводимого примера. В нем много кода, и я не знаю, как воспроизвести эту ситуацию с помощью небольшого количества кода. Пожалуйста, дайте мне знать, если вам нужен мой код.

Последняя 101-я итерация:

---------------- CAUCHY entered-------------------

There are 4  breakpoints

Piece      1 f1, f2 at start point -9.1069e-03  3.1139e+01

Distance to the next break point =   1.9816e+00

Distance to the stationary point =   2.9246e-04

GCP found in this segment

Piece      1 f1, f2 at start point -9.1069e-03  3.1139e+01

Distance to the stationary point =   2.9246e-04

Cauchy X =  -0.749937 0.999 0.841376 1.14695 0.134673 0.121755 0.365289 


---------------- exit CAUCHY----------------------

0 variables leave; 0 variables enter

6  variables are free at GCP on iteration 101

LINE SEARCH 0 times; norm of step = 0.000232633

X = -0.749896 **0.999** 0.841349 1.14697 0.134672 0.121757 0.36551 

G = -0.0154393 **-412.172** -0.0621798 0.0130552 -0.00801055 0.00692317 -0.0134718 

final  value -152.449285 

**stopped after 101 iterations**

Error in optim(start, f, method = method, hessian = TRUE, ...) : 
  non-finite finite-difference value [2]

---- ОБНОВЛЕНИЕ 1 ---

Я последовал предложению Роланда, но сначала попытался установить maxit на 200: control = list(maxit=200, trace=6).

Теперь процедура сходится на 106-й итерации, но я все еще получаю сообщение об ошибке:

iterations 106
function evaluations 127
segments explored during Cauchy searches 110
BFGS updates skipped 2
active bounds at final generalized Cauchy point 1
norm of the final projected gradient 0.0217961
final function value -152.449

X = -0.749748 0.999 0.841415 1.14687 0.134666 0.121766 0.366383 

F = -152.449

final  value -152.449295 

converged

Error in optim(start, f, method = method, hessian = TRUE, ...) : 
  non-finite finite-difference value [2]

---- ОБНОВЛЕНИЕ 2 ---

Я последовал предложению Бисваджита Банерджи optim в r: ошибка конечных разностей и установил ndeps, который ?optim сообщает мне: «Вектор размеров шагов для конечно-разностное приближение к градиенту »до 0,0001 для второго параметра (по умолчанию 0,001 для всех остальных параметров). Теперь все отлично работает! Интересно, связано ли это со значением второго параметра, являющимся верхним пределом, или с относительно большим значением G?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...