Ошибка в optim: функция не может быть оценена при начальных параметрах

Так что я столкнулся с этой странной ошибкой в ​​R. У меня есть простая функция, которая возвращает термин ошибки при сравнении реальных и смоделированных цен, называемая hestondifferences(),

когда я пытаюсь найти локальные минимумы через:

 res<-optim(fn=hestondifferences, par = c(vT=vT, rho=rho, k=k, sigma=sigma))

Я получаю сообщение об ошибке:

Ошибка в optim(fn = hestondifferences, par = c(vT = vT, rho = rho, k = k,: функция не может быть оценена по начальным параметрам

Меня смущает то, что вызов функции напрямую с начальными параметрами hestondifferences(vT, rho, k, sigma) возвращает правильное значение.

Функция hestondifferences() записывается таким образом, что всякий раз, когда моделирование невозможно для определенного набора параметров, оно возвращает NA что соответствует тому, что optim() надеется.

1 ответ

Решение

Optim ожидает, что функции имеют только один аргумент. Следовательно, все дальнейшие аргументы должны передаваться в векторе. То есть: функция должна быть hestondifferences(c(vT, rho, k, sigma)) вместо hestondifferences(vT, rho, k, sigma). Смотрите документацию:

fn: функция, которая должна быть свернута (или развернута), с первым аргументом - вектором параметров, над которыми должна происходить минимизация. Должен вернуть скалярный результат.

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