如何解决Python中拉丁超立方体采样中相关矩阵的使用
我试图在 Python 3.8 的拉丁超立方体设计中考虑 5 个不同参数之间的交互。但是,我不知道该怎么做...
本质上,我有一个包含 500 个模拟的初始集合,其中我扰乱了 5 个主要参数,对它们的真实分布只有有限的了解(所以在这个阶段我从均匀分布中采样)。这 500 个成员最初是通过生成 5 个维度的拉丁超立方体创建的,采样 500 次。
然后我将模拟结果与我的观察结果进行比较,这样我就可以只保存与观察结果接近的那些。下面是前 5 个“良好”模拟的值示例(总数据集包含 51 个良好模拟)。每列是相同的参数,行是不同的模拟:
X Y Z R T
0 10.51 0.826 1.20 2260.0 12.0
1 9.79 1.691 0.64 1770.0 12.0
2 9.69 2.623 0.54 2400.0 11.0
3 9.91 0.783 1.01 2200.0 17.0
4 9.42 1.872 1.11 1400.0 15.0
然后,我想使用这些参数范围来拟合新的分布,并对拉丁超立方体中的每个参数重新采样以获得新的集合。数据有偏差,Gamma 很适合。所以,现在不考虑交互,我只是用伽马分布拟合参数:
a_X,loc_X,scale_X = stats.gamma.fit(X)
a_Y,loc_Y,scale_Y = stats.gamma.fit(Y)
a_Z,loc_Z,scale_Z = stats.gamma.fit(Z)
a_R,loc_R,scale_R = stats.gamma.fit(R)
a_T,loc_T,scale_T = stats.gamma.fit(T)
然后我使用 pydoe 的 LHS 函数创建我的新 LHS 设计:
parameter_sets = lhs(n,samples=s)
其中 n = 5 和 s = 500,我将其转换为伽马分布:
parameter_sets[:,0] = gamma(a=a_X,loc=loc_X,scale=scale_X).ppf(parameter_sets[:,0])
parameter_sets[:,1] = gamma(a=a_Y,loc=loc_Y,scale=scale_Y).ppf(parameter_sets[:,1])
parameter_sets[:,2] = gamma(a=a_Z,loc=loc_Z,scale=scale_Z).ppf(parameter_sets[:,2])
parameter_sets[:,3] = gamma(a=a_R,loc=loc_R,scale=scale_R).ppf(parameter_sets[:,3])
parameter_sets[:,4] = gamma(a=a_T,loc=loc_T,scale=scale_T).ppf(parameter_sets[:,4])
如果我运行这些新的 500 次模拟,并将它们与观测值进行比较,则更接近观测值的模拟次数会显着增加。 但是,我现在必须改进方法,并考虑参数之间的相互作用。我创建了一个相关矩阵,似乎主要的相互作用在 X、Y 和 Z 之间(我期待它)。我得到的相关矩阵是这样的
X Y Z R T
X 1.000000 -0.477159 -0.135367 0.074064 -0.045986
Y -0.477159 1.000000 -0.501240 -0.127851 -0.139549
Z -0.135367 -0.501240 1.000000 -0.078035 -0.026585
R 0.074064 -0.127851 -0.078035 1.000000 -0.004523
T -0.045986 -0.139549 -0.026585 -0.004523 1.000000
但是,我不知道如何在 LHS 中整合相关矩阵... 非常感谢任何帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。