如何解决使用SALib morris采样器生成具有正态分布的参数样本
我想知道如何使用SALib Morris采样器生成具有正态分布的样本。 (用于使用莫里斯方法进行敏感性分析)
由于morris采样器中尚不支持“ dists”语句(与saltelli-sampler一样),因此我尝试了一种变通方法(已使用具有“ dists”且有效的saltelli-sampler进行了测试),但是,当将均匀分布转换为正态分布时,使用这种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]]}
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,1])
new_samples[:,2] = lhsmdu.inverseTransformSample(p3,2])
df = pd.DataFrame(new_samples)
df.columns = ['P1','P3']
print(df)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。