zoukankan      html  css  js  c++  java
  • Monte Carolo MethodGenerating Random Variable

    最近在阅读一本书Introducing Monte Carlo Methods with R,这本书主要的目的就是使用R这个语言来介绍蒙特卡洛方法,希望能借这个机会彻底弄懂蒙特卡洛法。
    现在看到第二章,主要的内容就是如何使用均匀分布来生成所有其他我们想要的分布,其实类似的内容我已经在Pattern Recognition and Machine Learning中看到过的,
    方法如下:

    • Inverse Transform Method
    • General Transformation Method
    • Accept-Reject Method

    Inverse Transform Method: 对于一个具有概率密度ƒ的分布来说,它的cdf函数F(X)是一个0~1区间的均匀分布,然后一个定理就是:对某个概率分布的cdf函数F求
    逆,所获得的结果符合原来随机变量的概率密度。下面来定义一个cdf函数F(X)的求逆操作:
    Daum equation 1359880144861

    因此如果我们能获得显式的cdf函数,那么就可以从均匀分布获得这个cdf函数所对应的概率密度函数。

    General Transformation Method: 有些概率分布之间存在一定的简单关系,比如n个a概率分布的相加,所获得结果符合概率密度b分布,这样我们就可以使用这种特性
    来使用简单的概率分布获得复杂的概率分布。

    Accept-Reject Method: 上面的方法都是有自己的局限的,对于Inverse Transform Method来说,并不是所有的概率分布的cdf都能显式表示成函数形式的。对于General
    Transformation Method来说,有些非标准的概率分布不能用这种方法获得,但是Accept-Reject Method就可以克服以上方法的局限性,模拟任意概率分布(前提是存在
    一个简单的概率分布g)。需要满足的条件包括以下几个:

    1. 当f(x)大于0的时候,g(x)也必须大于0
    2. 对于所有的x,{f(x)/g(x)} 小于等于 M 恒成立。

    因此Accept-Reject方法如下,首先产生一个y,符合概率分布g,然后再产生一个u,属于0~1区间的均匀分布,如果满足如下关系,则接受y,否则重新开始。
    Daum equation 1359881576126
    对于这个方法来说有以下几点需要注意:
    • 这个方法需要ƒ和M,对于归一化常量则没有要求
    • 这个方法不需要M非常的精确,可以稍微大一点,或者很多。但是问题是任意一个y被接受的概率是1/M,因此在可能的情况下,M越小越好。

  • 相关阅读:
    linux安装git
    安装tidb数据库
    docker的简单操作和端口映射
    zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)
    zabbix简单的操作(添加主机)
    LINQ 函数的实战演练测试
    C#基础:LINQ 查询函数整理
    C#中的LINQ
    C#高级编程笔记 2016年10月26日 MVC入门 Controller
    委托、Lambda表达式和事件
  • 原文地址:https://www.cnblogs.com/lacozhang/p/2922861.html
Copyright © 2011-2022 走看看