不同分布的转换问题(2016.11.18)

不同分布的转换问题

       对于连续型随机变量:

       任何的连续随机变量,如果已知其分布,均可以生产均匀分布。

       设随机变量为X, 累积分布为F_X.因为随机变量的函数也是随机变量,所以F_X(X)也是随机变量。现在来求其分布,P{F_X(X) leq a} = P{X leq F^{-1}_X(a)}=F_X(F^{-1}_X(a))=a,考虑到累积函数的值域,其为[0, 1]上的均匀分布。

       若X 服从正态分布,则 Y=Phi(X) 服从[0,1]间的均匀分布,其中Phi是正态分布函数的cumulative distribution function。

       对于离散型随机变量不服从上述。

       如果你有一个均匀分布的随机数生成器,如何产生正态分布的变量?通常来说我们一般的程序都能更直接地生成均匀分布的随机变量。

       一种业界广泛使用的做法叫Box-Muller-Wiener算法。首先生成一对[0,1]上的均匀分布的,独立的随机变量A和B。然后用A *2pi 作为角度,sqrt(-2*log(B)) 作为半径,得到极坐标下的一个点。这个点的两个坐标(X,Y)就是一个二维的标准正态分布。

       那么回到本题,如何利用正态分布的两个变量X,Y生成均匀分布的随机变量?现有的答案们提到了其中一种做法, 即计算点(X,Y)在二维平面内与x轴(或任意其他固定方向)的夹角——这样我们就得到了前述过程中的随机变量A * 2pi。其实另一种方式是计算exp( -0.5 * (X^2 + Y^2))——这样我们就得到了前述过程中的随机变量B。某种意义上来说,后者更为稳定,因为不涉及除法运算(例如arctan(Y/X)),可以以很大概率避免overflow等等问题。

       值得注意的是,点(X,Y)到原点距离的平方X^2 + Y^2是服从卡方分布的随机变量。当变量数为2的时候,这是一个参数为2的指数分布。对于指数分布的随机变量来说,其累积密度函数有解析的表达式,可以直接通过均匀分布来生成。同样的办法对一维正态分布则只能近似数值处理。


 

原文地址:https://www.cnblogs.com/i201102053/p/10626600.html