0
我試過了do.call並應用,並且有一個類似的使用plyr包的nlminb答案,但仍然不行。所以我向你們提出任何建議。將多個起始值傳遞給nlminb
我已經創建了以下功能:
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)"
並且那OK!我從數學角度理解發生了什麼。實際上我想用不同的起始值。
我嘗試將多個起始值傳遞給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?
感謝您的任何建議!
黑麥