优化错误:无法在初始参数下评估函数

时间:2013-02-25 13:33:55

标签: r nonlinear-functions nonlinear-optimization nlm

所以我在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 个答案:

答案 0 :(得分:5)

Optim期望函数只有一个参数。因此,所有进一步的参数都应该在向量中传递。那就是:函数必须是 hestondifferences(c(vT,rho,k,sigma))而不是hestondifferences(vT,rho,k,sigma)。请参阅documentation

  

fn:   要最小化(或最大化)的函数,第一个参数是要进行最小化的参数向量。它应该返回一个标量结果。