Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 利用SALib-morris采样器生成正态分布参数样本_Python_Sampling_Normal Distribution - Fatal编程技术网

Python 利用SALib-morris采样器生成正态分布参数样本

Python 利用SALib-morris采样器生成正态分布参数样本,python,sampling,normal-distribution,Python,Sampling,Normal Distribution,我想知道如何使用SALib Morris采样器生成正态分布的样本。(用于使用莫里斯法进行敏感性分析) 由于morris采样器(与saltelli采样器一样)中尚不支持“dists”语句,因此我尝试了一种解决方法(使用具有“dists”的saltelli采样器进行测试,结果有效),但在将均匀分布转换为正态分布时,我使用此morris方法在样本中接收到大量无限值。有解决办法吗?->当然,我不能在我的模拟模型中使用这些无限值 试用代码: from SALib.sample import morris


我想知道如何使用SALib Morris采样器生成正态分布的样本。(用于使用莫里斯法进行敏感性分析)

由于morris采样器(与saltelli采样器一样)中尚不支持“dists”语句,因此我尝试了一种解决方法(使用具有“dists”的saltelli采样器进行测试,结果有效),但在将均匀分布转换为正态分布时,我使用此morris方法在样本中接收到大量无限值。有解决办法吗?->当然,我不能在我的模拟模型中使用这些无限值

试用代码:

from SALib.sample import morris

import pandas as pd

import scipy.stats.distributions as ssd

import lhsmdu



# problem definition ('num_vars', 'names', 'bounds', 'dists')

prob_dists_code = {'num_vars': 3,
                      
                      'names': ['P1', 'P2', 'P3'],

                     'groups': None,

                     'bounds': [[0.0, 1.0], [0.0, 1.0], [0.0, 1.0]]}

np_array = morris.sample(prob_dists_code, N=1000, num_levels=4, optimal_trajectories=None)

p1 = ssd.uniform(loc=0.9, scale=0.2)
p2 = ssd.norm(loc=45, scale=10)
p3 = ssd.norm(loc=0, scale=1)

new_samples = np_array

new_samples[:, 0] = lhsmdu.inverseTransformSample(p1, np_array[:, 0])

new_samples[:, 1] = lhsmdu.inverseTransformSample(p2, np_array[:, 1])

new_samples[:, 2] = lhsmdu.inverseTransformSample(p3, np_array[:, 2])


df = pd.DataFrame(new_samples)

df.columns = ['P1', 'P2', 'P3']

print(df)