Я попробовал do.call и apply, и был похожий ответ nlminb, в котором использовался пакет plyr, но он все равно не помог. Поэтому я обращаюсь ко всем вам за любыми предложениями.
Я создал следующую функцию:
calloptim <- function( under,strike, rf, ttoe,par) {(-(under*par[1]
-strike*exp(-rf*ttoe)*par[2]))^2}
, а затем использовал nlminb для оценки номинальной величины, сохраняя остальные аргументы постоянными:
nlminb(c(2,2), calloptim, under= 90, strike = 100, rf =0.05, ttoe=3)
, что дает:
$par
[1] 1.953851 2.043045
$objective
[1] 1.335531e-17
$convergence
[1] 0
$iterations
[1] 4
$evaluations
function gradient
6 10
$message
[1] "X-convergence (3)"
при вводе другого начального значения, например
nlminb(c(5,5), calloptim, under= 90, strike = 100, rf =0.05, ttoe=3)
Я получаю разные оценки:
$par
[1] 4.885987 5.109036
$objective
[1] 2.464145e-14
$convergence
[1] 1
$iterations
[1] 2
$evaluations
function gradient
33 4
$message
[1] "false convergence (8)"
И это нормально! Я математически понимаю, что происходит. На самом деле я хочу использовать разные начальные значения.
Моя проблема возникает, когда я пытаюсь передать несколько начальных значений в nlminb.
Я создаю матрицу:
f<- c(2,5,2,5)
dim(f) <- c(2,2)
> f
[,1] [,2]
[1,] 2 2
[2,] 5 5
Но когда я передаю f начальному значению nlminb
nlminb(f, calloptim, under= 90, strike = 100, rf =0.05, ttoe=3)
Я получаю:
$par
[1] 3.452902 3.610530 2.000000 5.000000
$objective
[1] 3.010198e-19
$convergence
[1] 0
$iterations
[1] 4
$evaluations
function gradient
22 24
$message
[1] "X-convergence (3)"
Итак, мой вопрос: как я могу передать несколько строк начальных значений в nlminb?
Спасибо за любые предложения!
Ржаной