问题描述: 在尝试使用sceua时,我遇到了以下问题。
我想用SCEUA获取加权平均权重值,涉及三个参数,每个参数的范围是0到1。
众所周知,加权平均时,权重之和应为1。
我试图通过设置隐式参数来实现这个目标,但无法达到预期的结果,并且权重之和不为1。
例如
implicit=function(pars)(pars[1]+pars[2]+pars[3])==1
另一方面,我想用两个有效数字来保存重量值。
尽管查阅了软件包文档和论坛,我仍然无法解决问题。
我的运行环境:
解决问题的尝试:
附加信息:
我发现这是一个老问题,所以我不确定您是否已经找到解决方案,或使用了不同的方法。但如果有人碰巧通过搜索找到了这个——问题就出在隐式函数的定义上。
implicit=function(pars)(pars[1]+pars[2]+pars[3])==1
sceua 会尝试猜测参数,而猜测三个恰好等于 1 的参数几乎是不可能的。相反,最好只用 sceua 拟合两个参数,但限制是它们必须小于 1。 校准后 pars[3] = 1-pars[1]-pars[2]
(下面的等式显示
> 1
,因为对于未满足要求的测试,隐式函数应返回 1 或 TRUE)
implicit=function(pars)(pars[1]+pars[2]) > 1