R:优化错误:“列表”对象无法强制输入“双精度”

问题描述

我试图通过使用import {asyncScheduler,scheduled} from "rxjs"; scheduled([1,2,3],asyncScheduler); 最小化Kullback-Leibler散度来获取双指数模型的参数。我正在使用的函数具有3个参数,但是当我使用optim将它们传递给optim时,会引发错误“列表对象不能被强制键入'double'””,但我什至没有使用列表。

这是我正在使用的代码

par = par

为什么会这样?

谢谢!

解决方法

您传递给optim的函数需要返回一个标量值,而您的kld_optim函数则返回对integrate()的调用结果,根据?integrate帮助页,返回列表,而不是数字值。该列表中包含的“值”以“值”为名。因此,将您的integrate()呼叫更改为

  integrate(integrand,from_a,to_b,x = x,w = w,b = b,p = p,d = d)$value