通过R-功能NLM传递函数参数

我可能是不合理的要求帮助调试程序,但我已经花了一天半的时间对这个代码很简单位,并已江郎才尽。 我想优化一个名为“log.pr.data”功能相对于第一个参数。

由于功能优化需要你的参数设置界限,我决定使用NLM只需要一个出发点。 我已经检查与NLM确实能够函数作为参数传递简单exampels。 我的问题是我无法传递一个函数在这种特殊情况下的参数。

因此,这里的目标函数(有两个打印诊断)。 我想对于参数lambda.s最大化。 (由于利益的问题,我在这里不是最大化的可能性。我想优化的重要性采样。)

log.pr.data<-function(lambda.s,n1,n0,lambda.star,psi0,tobs,g=T.chan){ print("Function log.pr.data") print(g) psi.s<-boundary(lambda.s,g,psi0,tobs,n1,n0) -my.dbinom(n0*lambda.s,n0,lambda.star,log=TRUE) }

我没有问题的命令:

nlm(log.pr.data,p=0.6,n1=n1,n0=n0,lambda.star=lambda.star,psi0=psi0,tobs=tobs)

它工作正常。 但我希望能够有机会函数g = T.chan。 于是我重新定义离开摹不确定的log.pr.data功能。 换句话说,我只是删除了“= T.chan”中的参数列表。 我检查了功能工作正常。 例如用命令

log.pr.data(l,n1,n0,lambda.star,psi0,tobs,T.chan)

为一系列的“L”的价值观,它工作正常,并给出了相同的值,其中G = T.chan在参数列表中指定的上功能。 所以T.chan被传递功能正常出现。

然后我尝试优化

nlm(log.pr.data,p=0.6,n1=n1,n0=n0,lambda.star=lambda.star,psi0=psi0,tobs=tobs,g=T.chan)

而我得到的错误

在NLM错误(函数(X)F(X,...),磷,粗麻布,typsize,FSCALE,味精,:无效的NA的参数值

这也是有趣的是,似乎没有要到log.pr.data一个电话,因为“功能log.pr.data”不打印。 在早期的尝试麻烦拍摄这个问题,我意识到,我是用符号“F”的传递函数,而这可能会导致问题,因为NLM称为它的obejctive函数“f”。 所以,我把它改为“G”贯穿始终。

--------------解决方案-------------

首先,我同意爱德华多·莱尼的评论,我们需要一个可重复的例子,让大家有“真实”的代码一起工作。

我盲目的猜测是,由于在研发可以缩写参数, g是不正确的“你的”G和一个缩写解决gradtolnlm功能。

在另一方面,如果我尝试你的代码片段nlm继续进行调用log.pr.data和失败,只有在第二print语句,因为T.chan不得而知。

因此可悲的是,没有一个工作(即没有可重复)的例子,这是很难找出什么是错的。

分类:ř 时间:2015-03-15 人气:2
本文关键词: R,NLM
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.400 (s). 10 q(s)