使用带有布尔或离散输入参数的python SALib saltelli.sample方法
我想使用Sobol方法对python中的复杂模型进行敏感性分析。该模型包括连续、离散和布尔输入参数 是否可以使用SALib python包来执行此分析?具体来说,当一些输入参数实际上没有上界或下界,而是只有几个离散选项(例如0或1)时,我可以使用saltelli.sample方法生成准随机的输入参数集吗 以下是SALib文档中saltelli.sample方法(生成低差异序列)的一个示例:使用带有布尔或离散输入参数的python SALib saltelli.sample方法,python,data-modeling,Python,Data Modeling,我想使用Sobol方法对python中的复杂模型进行敏感性分析。该模型包括连续、离散和布尔输入参数 是否可以使用SALib python包来执行此分析?具体来说,当一些输入参数实际上没有上界或下界,而是只有几个离散选项(例如0或1)时,我可以使用saltelli.sample方法生成准随机的输入参数集吗 以下是SALib文档中saltelli.sample方法(生成低差异序列)的一个示例: from SALib.sample import saltelli import numpy as np
from SALib.sample import saltelli
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, calc_second_order=True)
我的问题是,如果我的输入参数更像这样,我如何(如果有)使用此方法:
x1: continuous (so possible values could be 0, 0.01, 1.2...0.987)
x2: boolean (so possible values are 0 or 1)
x3: discrete (so possible values are 0, 0.25, 0.5, 0.75, or 1)
已在Github上发布解决方案,并希望在此处与其他人共享: 现在没有办法(正确地)对离散值或布尔值进行采样。所以我建议一种方法:采样一个连续的范围,并四舍五入到你想要的最接近的值 如果它是一个布尔变量,则在[0,1]上采样,然后向上或向下取整。如果结果为N,则在[0,N]上采样并四舍五入到最接近的整数 不久前有一篇关于这一点的博文: (清单上的项目2)
这有点老套,但我认为这或多或少是一种被接受的做法,尤其是在混合连续变量和离散变量的情况下。这仍然是最好的解决方案,还是在SALib中实现了更为自然的方法?