Я пытаюсь оценить семь ограниченных параметров с помощью функции 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?