【问题标题】:Error in optim: function cannot be evaluated at initial parameters [closed]优化错误:无法在初始参数处评估函数[关闭]
【发布时间】:2013-02-10 16:04:54
【问题描述】:

所以我在 R 中遇到了这个奇怪的错误。我有一个简单的函数,它在比较真实价格和模拟价格时返回一个错误项,称为 hestondifferences()

当我尝试通过以下方式找到局部最小值时:

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

我收到错误消息:

优化错误(fn = hestondifferences, par = c(vT = vT, rho = rho, k = k, : 函数不能在初始参数处求值

让我困惑的是,直接用初始参数hestondifferences(vT, rho, k, sigma)调用函数返回正确的值。

函数hestondifferences() 的编写方式是,只要对特定参数集无法进行模拟,它就会返回NA,这与optim() 的预期一致。

【问题讨论】:

  • 你能展示hestondifferences函数吗?
  • 该死,我才意识到我的错误。 hestondifferences 期望有四个参数,而 optim 只使用一个包含向量的参数。
  • @jcfrei 你可以回答并接受你自己的回答。

标签: r nonlinear-functions nonlinear-optimization nlm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多