拉丁超立方体抽样(LHS)研究(Matlab代码实现)

本文介绍了拉丁超立方体抽样(LHS)这一有效的方法,用于从变量分布中抽样。LHS确保了每个变量范围的完全覆盖,通过分层随机过程来最大化边际分布的层次。文章提供了详细的Matlab代码实现,展示了如何进行LHS抽样,并附带了参考文献。
摘要由CSDN通过智能技术生成

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

拉丁超立方体抽样(LHS)是一种分层随机过程,提供了一种从变量分布中抽样变量的有效方法(Iman和Conover,1980)。LHS涉及从k个变量X1、X2、…Xk中的每一个的规定分布中采样ns值。每个变量的累积分布被划分为N个等概率区间。从每个间隔中随机选择一个值(图1)。为每个变量获得的N个值与其他变量随机配对。与简单的随机抽样不同,该方法通过最大程度地分层每个边际分布,确保了每个变量范围的完全覆盖。

详细文章讲解见第3部分。 

📚2 运行结果

部分代码:

% Coefficients in rational approximations.
   a = [ -3.969683028665376e+01  2.209460984245205e+02 ...
         -2.759285104469687e+02  1.383577518672690e+02 ...
         -3.066479806614716e+01  2.506628277459239e+00 ];
   b = [ -5.447609879822406e+01  1.615858368580409e+02 ...
         -1.556989798598866e+02  6.680131188771972e+01 ...
         -1.328068155288572e+01 ];
   c = [ -7.784894002430293e-03 -3.223964580411365e-01 ...
         -2.400758277161838e+00 -2.549732539343734e+00 ...
         4.374664141464968e+00  2.938163982698783e+00 ];
   d = [  7.784695709041462e-03  3.224671290700398e-01 ...
          2.445134137142996e+00  3.754408661907416e+00 ];

   % Define break-points.
   plow  = 0.02425;
   phigh = 1 - plow;

   % Initialize output array.
   z = zeros(size(p));

   % Rational approximation for central region:
   k = plow <= p & p <= phigh;
   if any(k(:))
      q = p(k) - 0.5;
      r = q.*q;
      z(k) = (((((a(1)*r+a(2)).*r+a(3)).*r+a(4)).*r+a(5)).*r+a(6)).*q ./ ...
             (((((b(1)*r+b(2)).*r+b(3)).*r+b(4)).*r+b(5)).*r+1);
   end

   % Rational approximation for lower region:
   k = 0 < p & p < plow;
   if any(k(:))
      q  = sqrt(-2*log(p(k)));
      z(k) = (((((c(1)*q+c(2)).*q+c(3)).*q+c(4)).*q+c(5)).*q+c(6)) ./ ...
             ((((d(1)*q+d(2)).*q+d(3)).*q+d(4)).*q+1);
   end

   % Rational approximation for upper region:
   k = phigh < p & p < 1;
   if any(k(:))
      q  = sqrt(-2*log(1-p(k)));
      z(k) = -(((((c(1)*q+c(2)).*q+c(3)).*q+c(4)).*q+c(5)).*q+c(6)) ./ ...
             ((((d(1)*q+d(2)).*q+d(3)).*q+d(4)).*q+1);
   end

   % Case when P = 0:
   z(p == 0) = -Inf;

   % Case when P = 1:
   z(p == 1) = Inf;

   % Cases when output will be NaN:
   k = p < 0 | p > 1 | isnan(p);
   if any(k(:))
      z(k) = NaN;
   end

   % The relative error of the approximation has absolute value less
   % than 1.15e-9.  One iteration of Halley's rational method (third
   % order) gives full machine precision.
   k = 0 < p & p < 1;
   if any(k(:))
      e = 0.5*erfc(-z(k)/sqrt(2)) - p(k);          % error
      u = e * sqrt(2*pi) .* exp(z(k).^2/2);        % f(z)/df(z)
      %z(k) = z(k) - u;                             % Newton's method
      z(k) = z(k) - u./( 1 + z(k).*u/2 );          % Halley's method
   end
 

🌈3 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值