如何进行具有多个参数的 ODE 的敏感性分析?

计算科学 数值分析 数值建模
2021-11-28 10:49:52

我有几个 ODE 描述的系统。该解决方案对我来说看起来不错。现在我需要对模型中使用的参数进行敏感性分析。因此,我有以下问题:

  1. 我有一个向量形式的输出(及时解决)。但是敏感例程(例如SALib)要求输出是标量变量F(X)但不是向量。我该怎么办?我在几个资源中发现他们对一些“真实”解决方案进行建模,参数没有任何变化,后来(当他们执行灵敏度时)他们通过 RMSD 将其与“真实”解决方案进行比较。这是正确的做法吗?(您能否提供一些参考资料)

  2. 参数边界:如何选择参数范围?在一些论文中,建模者只做他们参数值的±5%。这样做的最典型方法是什么?根据文献值取 [min-5% ; max+5%] 会好吗?如果我没有任何文学价值怎么办?

1个回答
  1. 有2种可能:

    (A) 不知何故将时间序列聚合成一个数字。如果你有一个“真正的”解决方案,是的,你可以计算 RMS 误差或其他一些误差度量。如果您没有真正的解决方案可供比较,您可以使用其他一些有意义的统计数据(如总和或峰值等,具体取决于应用程序)进行汇总。但总的来说,在这种情况下,您只计算一个代表整个时间序列的数字的灵敏度。

    (B) 或者,您可以计算每个时间步的输出值的灵敏度。您将创建一个循环并针对每个时间步进行分析。这在计算上更加密集,但可能会导致一些更多的动态信息。

    参考:

    Herman, JD, Kollat​​, JB, Reed, PM 和 Wagener, T. (2013)。从地图到电影:空间分布流域模型的高分辨率时变敏感性分析。水文和地球系统科学,17(12),5109-5125。

    van Werkhoven, K.、Wagener, T.、Reed, P. 和 Tang, Y. (2008)。跨水文气候梯度的流域模型行为的表征。水资源研究,44(1)。

  2. 至于参数边界,这是非常重要且非常特定于域的。首先看看你是否能从他们使用你的模型的另一篇论文中找到一些范围,并引用这些范围。如果不是,选择百分比值是可以的,但 5% 似乎有点窄——您可以尝试 10%。最重要的是你的输出仍然有意义。如果您的范围产生“非物理”的参数样本,换句话说,输出不再与现实有关,那么您应该缩小它们。这里有很多主观性,它可以改变你的结果。

(c) SALib 的创建者 Jon Herman