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 (将#修改为@)