zoukankan      html  css  js  c++  java
  • 不同分布的转换问题(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的指数分布。对于指数分布的随机变量来说,其累积密度函数有解析的表达式,可以直接通过均匀分布来生成。同样的办法对一维正态分布则只能近似数值处理。


     

  • 相关阅读:
    事件-(DOM标准事件模型)
    BOM-01 (BOM的对象)
    DOM-04 (DOM常用对象)
    DOM-03 (修改2,添加删除)
    DOM-02 (查找2,修改1)
    DOM-01 (DOM基础,DOM树,查找元素1)
    boot-02 (组件<(水平/胶囊/选项卡)导航,折叠,卡片,手风琴,折叠导航栏,媒体对象,焦点轮播图,巨幕,徽章>)
    boot-01 (栅格布局/表单样式/组件1)
    AI deeplab
    AI 强化学习
  • 原文地址:https://www.cnblogs.com/i201102053/p/10626600.html
Copyright © 2011-2022 走看看