详解利用均匀随机分布的变量生成服从高斯分布的变量

问题可以阐述如下:

有一个 [ − 1 , 1 ] [-1,1] [1,1]均匀分布的随机变量作为输入 x x x,编写一个函数使之输出为一个均值为 0 0 0,方差为 1 1 1,服从高斯分布的变量。(公式推导和程序实现)

已知高斯分布的概率密度函数:
p ( x ) = 1 2 π σ exp ⁡ { − 1 2 ( x − μ σ ) 2 } (1) p(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp \left\{ -\frac{1}{2}(\frac{x-\mu}{\sigma})^2 \right\} \tag{1} p(x)=2π σ1exp{21(σxμ)2}(1)
根据题干要求,分布中的参数分别为: μ = 0 ,   σ 2 = 1 \mu=0,\ \sigma^2=1 μ=0, σ2=1,即标准高斯分布:
p ( x ) = 1 2 π exp ⁡ ( − x 2 2 ) (2) p(x)=\frac{1}{\sqrt{2\pi}}\exp \left( -\frac{x^2}{2} \right) \tag{2} p(x)=2π 1exp(2x2)(2)
根据二维正态分布下,若两个分量独立,则其模服从瑞利分布,即可通过标准的分布函数求反函数的方法实现:利用[0,1]的均匀随机分布数列得到服从高斯分布的变量。

I = ∫ − ∞ ∞ e − x 2 2 d x I = \int_{-\infty}^{\infty}e^{-\frac{x^2}{2}}dx I=e2x2dx,则
I 2 = ∫ − ∞ ∞ e − x 2 2 d x ∫ − ∞ ∞ e − y 2 2 d y = ∫ − ∞ ∞ e − x 2 + y 2 2 d x d y (3) I^{2}=\int_{-\infty}^{\infty} e^{\frac{-x^{2}}{2}} d x \int_{-\infty}^{\infty} e^{\frac{-y^{2}}{2}} d y=\int_{-\infty}^{\infty} e^{-\frac{x^{2}+y^{2}}{2}} d x d y \tag{3} I2=e2x2dxe2y2dy=e2x2+y2dxdy(3)
用三角函数来对上式进行表示,即令 x = r cos ⁡ θ ,   y = r sin ⁡ θ x=r\cos\theta, \ y = r\sin\theta x=rcosθ, y=rsinθ
I 2 = ∫ 0 2 π ∫ 0 ∞ e − r 2 2 r d r d θ = 2 π ∫ 0 ∞ e − r 2 2 r d r = 2 π (4) I^{2}=\int_{0}^{2 \pi} \int_{0}^{\infty} e^{-\frac{r^{2}}{2}} r d r d \theta=2 \pi \int_{0}^{\infty} e^{-\frac{r^{2}}{2}} r d r=2 \pi \tag{4} I2=02π0e2r2rdrdθ=2π0e2r2rdr=2π(4)
( X , Y ) (X,Y) (X,Y)作为相互独立的标准正态分布变量,对应的联合概率密度函数 f ( X , Y ) ( x , y ) f_{(X,Y)}(x,y) f(X,Y)(x,y)可表示为:
f ( X , Y ) ( x , y ) = f ( x ) × f ( y ) = 1 2 π exp ⁡ ( − x 2 2 ) 1 2 π exp ⁡ ( − y 2 2 ) = 1 2 π e − x 2 + y 2 2 (5) \begin{aligned} f_{(X, Y)}(x, y) & = f(x)\times f(y) \\ & = \color{blue}{\frac{1}{\sqrt{2\pi}}\exp \left( -\frac{x^2}{2} \right)} \color{green}{\frac{1}{\sqrt{2\pi}}\exp \left( -\frac{y^2}{2} \right)} \\ & = \frac{1}{2 \pi} e^{-\frac{x^{2}+y^{2}}{2}} \\ \end{aligned} \tag{5} f(X,Y)(x,y)=f(x)×f(y)=2π 1exp(2x2)2π 1exp(2y2)=2π1e2x2+y2(5)
x = R cos ⁡ θ ,   y = R sin ⁡ θ x=R\cos\theta, \ y = R\sin\theta x=Rcosθ, y=Rsinθ,使得两个正态分布变量可以通过向量 r \textbf{r} r来表示(包含大小 R R R和角度 θ \theta θ两个分量),由于 θ \theta θ [ 0 , 2 π ] [0,2\pi] [0,2π]的区间内均匀采样,则这个二维正态分布关于R的分布函数可表示为:
P ( R ≤ r ) = ∫ 0 2 π ∫ 0 r 1 2 π e − u 2 2 u d u d θ = ∫ 0 r e − u 2 2 u d u = 1 − e − r 2 2 (6) P(R \leq r)=\int_{0}^{2 \pi} \int_{0}^{r} \frac{1}{2 \pi} e^{\frac{-u^{2}}{2}} u d u d \theta=\int_{0}^{r} e^{\frac{-u^{2}}{2}} u d u=1-e^{\frac{-r^{2}}{2}} \tag{6} P(Rr)=02π0r2π1e2u2ududθ=0re2u2udu=1e2r2(6)
其中 X , Y ∼ N ( 0 , σ 2 ) ,   R 2 = X 2 + Y 2 X,Y \sim N(0,\sigma^2),\ R^2=X^2+Y^2 X,YN(0,σ2), R2=X2+Y2 R R R表示向量 X , Y X,Y X,Y的模, R R R的分布函数 F R ( r ) F_R(r) FR(r)则可表示为:
F R ( r ) = 1 − e − r 2 2 (7) F_R(r) = 1-e^{\frac{-r^2}{2}} \tag{7} FR(r)=1e2r2(7)
其中 Z Z Z表示在取值为 R R R处所对应的瑞利分布函数( R R R的分布函数) F R ( r ) F_R(r) FR(r),且根据Eq(7)可知二维正态分布概率密度函数中的 e − r 2 2 e^{\frac{-r^2}{2}} e2r2服从指数分布,即半径大小 r r r在二维平面中所对应的分布也为指数分布。

因此,由于服从指数分布,因此可以直接对这一分布进行逆变换采样,生成结果为 [ 0 , 1 ] [0,1] [0,1]区间上均匀分布的随机变量,因此通过对Eq(7)求反可得:
R = F R − 1 ( Z ) = − 2 ln ⁡ ( 1 − Z ) (8) R=F_{R}^{-1}(Z)=\sqrt{-2 \ln (1-Z)} \tag{8} R=FR1(Z)=2ln(1Z) (8)
综上,整个推导过程可以理解为:将二维正态分布的概率密度函数(probability density function,PDF)以向量形式看做两个独立部分的乘积,即Eq(9)中蓝色和红色两部分:
f ( X , Y ) ( x , y ) = f ( x ) × f ( y ) = 1 2 π e − x 2 + y 2 2 (9) \begin{aligned} f_{(X, Y)}(x, y) & = f(x)\times f(y) \\ & = \color{blue}{ \frac{1}{2 \pi}} \color{green}{} e^{-\frac{x^{2}+y^{2}}{2}} \\ \end{aligned} \tag{9} f(X,Y)(x,y)=f(x)×f(y)=2π1e2x2+y2(9)

  1. 第一部分为 [ 0 , 2 π ] [0,2 \pi] [0,2π]范围中的均匀分布,代表了二维平面向量中的角度 θ \theta θ
  2. 第二部分则表现为 λ = 1 \lambda=1 λ=1的指数分布,对应了向量模的大小。

因此,可以通过两个服从 [ 0 , 1 ] [0,1] [0,1]均匀分布的样布转化为所对应的角度和半径,其方法如下:

  1. 模部分:根据Eq(8)中的逆变换结果,生成 [ 0 , 1 ] [0,1] [0,1]的均匀分布,对应了二维平面向量中的模
  2. 角度:生成 [ 0 , 1 ] [0,1] [0,1]之间的均匀分布,乘以参数 2 π 2 \pi 2π,即为二维平面向量所对应的角度。

对应的输入形式如下,假设有服从 [ 0 , 1 ] [0,1] [0,1]均匀分布的随机变量 U 1 , U 2 U_1,U_2 U1,U2,对应参数可描述为:
Z = U 1 θ = 2 π U 2 (10) \begin{aligned} &Z = U_1 \\ &\theta = 2\pi U_2 \end{aligned} \tag{10} Z=U1θ=2πU2(10)
将Eq(10)带入到 x = R cos ⁡ θ ,   y = R sin ⁡ θ x=R\cos\theta, \ y = R\sin\theta x=Rcosθ, y=Rsinθ中,对应结果为:
X = R cos ⁡ ( θ ) = − 2 ln ⁡ ( 1 − U 1 ) cos ⁡ ( 2 π U 2 ) Y = R sin ⁡ ( θ ) = − 2 ln ⁡ ( 1 − U 1 ) sin ⁡ ( 2 π U 2 ) (11) \begin{aligned} X &= R\cos(\theta) = \sqrt{-2 \ln (1-U_1)}\cos(2\pi U_2)\\ Y &= R\sin(\theta) = \sqrt{-2 \ln (1-U_1)}\sin(2\pi U_2) \end{aligned} \tag{11} XY=Rcos(θ)=2ln(1U1) cos(2πU2)=Rsin(θ)=2ln(1U1) sin(2πU2)(11)
其中 X , Y X,Y X,Y均为一个均值为 0 0 0,方差为 1 1 1,服从高斯分布的变量。
注:由于题目中的输入的均匀分布随机变量U1范围为[-1,1],只需要对变量进行(U1+1)./2的变化即可变换为一个均值为0,方差为1,服从高斯分布的变量

下面给出程序实现:

function [normdistribution] = uniform2norm(U1)
	U1 = (U1+1) ./ 2;
	U2=rand(1,length(U1));
	X=sqrt(-2 * log(1-U1)) .* cos(2*pi .* U2);
	Y=sqrt(-2 * log(1-U1)) .* sin(2*pi .* U2);
	normdistribution=[X,Y];
	histogram(normdistribution,100);

结果如下:
请添加图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值