C语言 设置参数估计的界限- R程序包泵

xe55xuns  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(191)

我们正在使用R中的pomp包拟合一个模型,并希望对我们正在估计的参数设置一些边界,因为它们正在探索一个无意义的空间,我们希望将其排除在该参数空间之外。我们当前的“最佳选择”是转换C中模型代码中的参数,将其限制在上限和下限之间。例如,如果我们想将参数beta限制在0到0.05之间,我们可以对估计的参数进行logit变换,使其介于0到1之间,然后乘以上限,这就是我们在C片段中定义模型的代码:
beta = ((exp(est_beta)/(1+exp(est_beta))*max_beta;
其中est_beta是从-Inf到Inf的空间中的参数估计,max_beta是上限。
所以我的问题是,有没有一种更优雅的方法来1)在pomp模型中对参数估计施加边界,或者2)在C中施加边界或创建截断变量?

os8fio9y

os8fio9y1#

pomp确实有一个显式工具,用于在核心模型代码之外定义这些转换:www.example.comhttps://kingaa.r-universe.dev/manual/pomp.html#parameter_trans
请注意,估算软件经常使用诸如logit之类的低水平转换来实现边界,因此我不会认为这是不优雅的!(例如,Stan:https://mc-stan.org/docs/2_22/reference-manual/variable-transforms-chapter.html
但是,使用强先验以避免对无意义的空间进行采样可能更有意义。

相关问题