问题描述
我想知道如何使用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 (将#修改为@)