8

所以我在 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() 期望的值。

4

1 回答 1

6

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

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

于 2013-02-25T13:50:11.493 回答