R最优对数似然估计与同一函数中的梯度

R最优对数似然估计与同一函数中的梯度,r,optimization,gradient,R,Optimization,Gradient,我已经编写了一个函数,用于在R中执行最大模拟似然估计,它工作得很好 然而,问题在于optim并不像matlab中的fminuc优化器那样调用相同的函数来同时估计似然值和梯度。因此,如果每次optim想要更新梯度,则必须重复给定参数向量的模拟。最后,optim调用了大约100倍的loglik函数来更新参数,另外调用了50倍的loglik函数来计算梯度 我想知道是否有一个优雅的解决方案来避免50个额外的模拟步骤,例如通过在每个步骤中存储估计的似然值和梯度。然后在下次调用似然函数之前,检查给定参数向量

我已经编写了一个函数,用于在R中执行最大模拟似然估计,它工作得很好

然而,问题在于optim并不像matlab中的fminuc优化器那样调用相同的函数来同时估计似然值和梯度。因此,如果每次optim想要更新梯度,则必须重复给定参数向量的模拟。最后,optim调用了大约100倍的loglik函数来更新参数,另外调用了50倍的loglik函数来计算梯度

我想知道是否有一个优雅的解决方案来避免50个额外的模拟步骤,例如通过在每个步骤中存储估计的似然值和梯度。然后在下次调用似然函数之前,检查给定参数向量的信息是否已经可用。这可以通过在optim和loglik函数之间插入一个附加函数来实现。但这似乎有点小题大做

有什么好主意吗

干杯,
Ben

我知道nlm()可以做到这一点,但最终由于任何原因,它比optim慢。Package
memoise
可能对您有用。它创建先前函数输入的散列并存储结果输出。基本上创建您所指的包装器函数。