对数正态分布的拉丁超立方抽样——Python版

617 阅读3分钟

@TOC 本文已参与「新人创作礼」活动,一起开启掘金创作之路。

0、拉丁超立方抽样的理论基础

0.1、概况

拉丁超立方体采样(LHS)最早由McKay等提出,并由Iman和Conover进一步发展,在很多领域中具有广泛的应用性。

拉丁超立方抽样也是一种分层抽样,在蒙特∙卡罗抽样方法的基础上对采样策略进行了改进,从而做到在保持统计显著性的同时减小采样规模。根据对每个超立方体内样本点的确定方式不同,可将拉丁超立方抽样技术分为:

  • 中值拉丁超立方抽样法
  • 拉丁超立方重要抽样法
  • 含随机排序法的拉丁超立方抽样

笔者重点介绍含随机排序法拉丁超立方抽样法的基本原理。

0.2、基本原理

拉丁超立方抽样的关键是对累积概率分布进行分层,累积概率在0到1之间,分成相等的间隔块后,根据间隔块的概率值得到样本区间。然后从每个样本区间中随机抽取样本,于是以抽样点代表每个区间的值。 根据n个随机变量x1x_1, x2x_2,∙∙∙, xkx_k,∙∙∙, xnx_n建立nn维向量空间,每个随机变量都遵循一定的概率分布,xkx_k的累积概率分布函数可以表示为

yk=f(x)y_{k}=f\left ( x \right )

0.3、基本步骤

假设在每一维向量空间中抽取N个样本,得到拉丁超立方抽样模拟的步骤为:

  1. 将每一维向量空间分成N份,根据式上式的反函数求得对应区间,使得每个区间具有相同的概率;
  2. 在每一维的每个区间中随机选取一个点作为采样点;
  3. 对每一维空间选出的样本点进行随机排序组成各自向量;
  4. 将上面采集到的样本向量进行组合就得到一个k×Nk×N的样本矩阵。

如下图所示,累积概率分布函数曲线被分成三个区间,每个区间都抽取一个样本,每个区间都有样本取出,且一旦取出后,这个区间将不再被抽样。 1 避免了在抽样量较少时可能出现的“聚集”问题,样本可以更加准确反映输入概率分布,实际应用时具有高效性。

1、导入库和基本准备

如前正态分布的抽样博客。

相对于生成生态分布随机变量的抽样方法及代码,仅仅需要改变生成部分即可,故本文仅仅展示了修改部分代码,其他部分请参见博文《对应于正态分布的拉丁超立方抽样

2、生成(具有对数正态分布的随机变量)参数的随机数

代码转第6条

3、将生成的随机数输出到Excel中

如前正态分布的抽样博客。

注意参数个数-D的变化对代码的影响

4、将生成的随机数输出到图像中

如前正态分布的抽样博客。

注意参数个数-D的变化对代码的影响

5、代码肯定可以实现抽样,若需一步一步的更详尽解释,请“挪步”佐佑思维公众号→免费、有问必答!

6、 ★佐佑思维二维码★

佐佑思维