如何使用R语言rtop包中的SCEUA获得加权平均权重

问题描述 投票:0回答:1
  1. 问题描述: 在尝试使用sceua时,我遇到了以下问题。

    我想用SCEUA获取加权平均权重值,涉及三个参数,每个参数的范围是0到1。

    众所周知,加权平均时,权重之和应为1。

    我试图通过设置隐式参数来实现这个目标,但无法达到预期的结果,并且权重之和不为1。

    例如

    implicit=function(pars)(pars[1]+pars[2]+pars[3])==1

    另一方面,我想用两个有效数字来保存重量值。

    尽管查阅了软件包文档和论坛,我仍然无法解决问题。

  2. 我的运行环境:

    • R版本:R 4.2.3
    • 操作系统:Windows 10
  3. 解决问题的尝试:

    • 我已查阅了软件包文档并尝试了建议的解决方案。
    • 我在 stackoverflow 上搜索了类似的问题,但没有找到任何适用的解决方案。
  4. 附加信息:

    • 如有必要,我可以提供其他信息,例如代码示例,以更好地阐明我的问题。
r mathematical-optimization r-package weighted-average
1个回答
0
投票

我发现这是一个老问题,所以我不确定您是否已经找到解决方案,或使用了不同的方法。但如果有人碰巧通过搜索找到了这个——问题就出在隐式函数的定义上。

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
© www.soinside.com 2019 - 2024. All rights reserved.