gpt4 book ai didi

python-3.x - 使用 SALib 工具箱对测量数据进行 Python 敏感性分析

转载 作者:行者123 更新时间:2023-12-04 03:03:09 26 4
gpt4 key购买 nike

我想了解如何使用 SALib python 工具箱执行 Sobol 敏感性分析(研究参数和交叉参数影响)

从原来的例子我应该这样进行:

from SALib.sample import saltelli
from SALib.analyze import sobol
from SALib.test_functions import Ishigami
import numpy as np

problem = {
'num_vars': 3,
'names': ['x1', 'x2', 'x3'],
'bounds': [[-np.pi, np.pi]]*3
}

# Generate samples
param_values = saltelli.sample(problem, 1000)

# Run model (example)
Y = Ishigami.evaluate(param_values)

# Perform analysis
Si = sobol.analyze(problem, Y, print_to_console=True)
# Returns a dictionary with keys 'S1', 'S1_conf', 'ST', and 'ST_conf'
# (first and total-order indices with bootstrap confidence intervals

因为在我的例子中,我从实验中获取数据,所以我没有链接 Xi 和 Yi 的模型。我只有一个输入矩阵和一个输出矩阵。

如果我们假设我的输入数据是从拉丁超立方体(一个很好的统计重新分区)生成的,如何使用 Salib 来评估我的参数的灵敏度?从我在代码中看到的:

Si = sobol.analyze(problem, Y, print_to_console=True)

我们只使用输入参数边界和输出。但是使用这种方法怎么可能知道哪个参数在两个集合之间变化?

感谢您的帮助!

最佳答案

没有直接的方法可以根据您对数据的描述使用 SAlib 计算 Sobol 指数。 SAlib 通过生成两个矩阵(A 和 B)然后使用通过在矩阵 A 中交叉采样矩阵 B 的值生成的附加值来计算一阶和全阶索引。下图显示了如何这个完成了。当代码评估索引时,它希望模型输出按此顺序排列。以这种方式计算指数的方法是基于 Saltelli 等人发表的方法。 (2010)。因为这不是拉丁超立方采样方法,所以实验数据很可能不起作用。

enter image description here

仍然可以完成敏感性分析的一种可能方法是使用实​​验数据中的替代模型或元模型。在这种情况下,您可以使用实验数据来拟合真实模型的近似值。然后可以通过 SAlib 或其他敏感度包分析此近似值。替代模型通常是多项式或基于克里金法。 Iooss 等人 (2006) 描述了一些方法。此方法的一些软件包括 UQlab(http://www.uqlab.com/,基于 MATLAB)和 BASS(https://cran.r-project.org/web/packages/BASS/index.html,R 包)等,具体取决于模型的具体类型和您要使用的拟合技术。

另一种可能性是找到一个不基于 Saltelli 等人 (2010) 方法的估算器。我不确定这样的估计器是否存在,但最好将这个问题发布到数学或概率与统计堆栈交换中。

引用资料:

Iooss, B, F. Van Dorpe, N. Devictor。 (2006)。 “剂量计算环境模型的响应面和灵敏度分析”。可靠性工程与系统安全 91:1241-1251.

Saltelli, A., P. Annoni, I. Azzini, F. Campolongo, M. Ratto, S. Tarantola。 2010. “模型输出的基于方差的敏感性分析。总敏感性指数的设计和估计”。计算机物理通信 181:259-270。

关于python-3.x - 使用 SALib 工具箱对测量数据进行 Python 敏感性分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47286191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com