随机采样方法整理与讲解(MCMC、Gibbs Sampling等)


下面总结这么几点:

1、蒙特卡洛数值积分

2、均匀分布,Box-Muller 变换

3、Monte Carlo principle

4、接受-拒绝抽样(Acceptance-Rejection sampling)

5、重要性抽样(Importance sampling)

6、马尔科夫链,马尔科夫稳态

7、MCMC——Metropolis-Hasting算法

8、MCMC——Gibbs Sampling算法

1. MCMC概述

从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。要弄懂MCMC的原理我们首先得搞清楚蒙特卡罗方法马尔科夫链的原理

gibbs简析:

gibbs采样需要知道样本中一个属性在其它所有属性下的条件概率,然后利用这个条件概率来分布产生各个属性的样本值。
gibbs采样属于随机模拟抽样算法中的一种(一类近似求解的方法)。随机模拟的核心是对一个分布进行抽样,常用的抽样算法包括:

  1. 接受-拒绝抽样;
  2. 重要性抽样;
  3. MCMC(马尔科夫链蒙特卡洛方法)方法,它包括两个非常著名的采样算法(metropolis-hasting算法和它的特例Gibbs采样算法)(补充:MCMC方法最早由Metropolis(1954)给出,后来Metropolis的算法由Hastings改进,合称为M-H算法。M-H算法是MCMC的基础方法。由M-H算法演化出了许多新的抽样方法,包括目前在MCMC中最常用的Gibbs抽样也可以看做M-H算法的一个特例)。

2、蒙特卡洛数值积分

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、均匀分布,Box-Muller 变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、Monte Carlo principle

4.1. 随机投点法

在这里插入图片描述

4.2. 平均值法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import random

r = 1.0  # 圆半径,假设为1
n = 300000  # 总投点数
count = 0  # 落到圆内投点数

# 投点x,y的范围
x_min, x_max = -r, r
y_min, y_max = -r, r

for i in range(0, n):

    # 在 [min, max] 范围内随机生成实数
    x = random.uniform(x_min, x_max)
    y = random.uniform(y_min, y_max)

    # 落到圆内投点数+1
    if x * x + y * y <= r:
        count += 1

pi = (count / float(n)) * 4
print("pi is ", pi)

# pi is 3.142053333333333

在这里插入图片描述

import random

n = 300000  # 总投点数
count = 0  # 位于曲线之下的投点数

# 投点x,y的范围
x_min, x_max = 1.0, 2.0
y_min, y_max = 0.0, 8.0

for i in range(0, n):

    # 在[min, max]范围内随机生成实数
    x = random.uniform(x_min, x_max)
    y = random.uniform(y_min,
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值