UA STAT675 统计计算I 随机数生成7 Envelope Accept-Reject Algorithm

  • Squeeze Principle
  • Atkinson's Poisson Simulation

上一讲我们推导了Accept-Reject Algorithm


Algorithm 3: Accept-Reject Algorithm

Step 1: Generate y∼gy \sim gy∼g, u∼U(0,1)u \sim U(0,1)u∼U(0,1)
Step 2: If u<f(y)Mg(y)u<\frac{f(y)}{Mg(y)}u<Mg(y)f(y)​, accept yyy as a random number of fff; otherwise, repeat Step 1-Step 2


它对所有的密度都适用,但前提是找到另一个密度作为工具密度,工具密度必须是目标密度的强函数;要提高这个算法的效率,最好的做法是设计一个ggg,它比fff稍微大一点点但又特别接近,使得M≈1M \approx 1M≈1,这一讲我们就介绍一些常用的设计工具密度的方法。

Squeeze Principle

上一讲我们分析了Accept-Reject Algorithm的效率,也就是要生成1个目标密度的随机数,平均需要MMM个均匀分布与工具密度的随机数;一种可行的改进是给目标密度再找一个下界,进一步降低采样器的计算成本。


Algorithm 4: Envelope Accept-Reject Algorithm

Step 1: Generate y∼guy \sim g_uy∼gu​, u∼U(0,1)u \sim U(0,1)u∼U(0,1)
Step 2: If u≤gl(y)Mgu(y)u\le \frac{g_l(y)}{Mg_u(y)}u≤Mgu​(y)gl​(y)​, accept yyy as a random number of fff; otherwise, go to Step 3;
Step 3: if u≤f(y)Mgu(y)u \le \frac{f(y)}{Mg_u(y)}u≤Mgu​(y)f(y)​, accept yyy as a random number of fff; otherwise, repeat Step 1-Step 3


算法分析

  1. 算法适用条件:构造glg_lgl​与gug_ugu​满足gl≤f≤gug_l \le f \le g_ugl​≤f≤gu​其中gug_ugu​是工具密度(instrumental density)、fff是目标密度(target density)、glg_lgl​是辅助函数
  2. 算法几何解释:gl,Mgug_l,Mg_ugl​,Mgu​构成了一个带状区域,glg_lgl​为下界,MguMg_uMgu​为上界,我们在MguMg_uMgu​下面的区域内均匀采样,一部分落在带状区域内,另一部分落在带状区域下方;直接接受带状区域下方的点,把带状区域内的点作为候选;目标密度fff把带状区域分割为上下两部分,落在下部分的候选点就是fff的随机样本
  3. 算法的效率:假设我们生成了一个gug_ugu​与U(0,1)U(0,1)U(0,1)的样本,它被直接接受的概率是∫Rgl(x)dx∫RMgu(x)dx=∫Rgl(x)dxM\frac{\int_{\mathbb{R}}g_l(x)dx}{\int_{\mathbb{R}}Mg_u(x)dx}=\frac{\int_{\mathbb{R}}g_l(x)dx}{M}∫R​Mgu​(x)dx∫R​gl​(x)dx​=M∫R​gl​(x)dx​成为候选点并被接受为随机样本的概率是∫R(f−gl)(x)dx∫RMgu(x)dx=1−∫Rgl(x)dxM\frac{\int_{\mathbb{R}}(f-g_l)(x)dx}{\int_{\mathbb{R}}Mg_u(x)dx}=\frac{1-\int_{\mathbb{R}}g_l(x)dx}{M}∫R​Mgu​(x)dx∫R​(f−gl​)(x)dx​=M1−∫R​gl​(x)dx​于是整体的接受率为∫Rgl(x)dxM+1−∫Rgl(x)dxM=1M\frac{\int_{\mathbb{R}}g_l(x)dx}{M}+\frac{1-\int_{\mathbb{R}}g_l(x)dx}{M}=\frac{1}{M}M∫R​gl​(x)dx​+M1−∫R​gl​(x)dx​=M1​因此Envelope Accept-Reject Algorithm与Accept-Reject Algorithm的接受率一样,在效率上没有改进,但是直接接受的样本,也就是∫Rgl(x)dxM\frac{\int_{\mathbb{R}}g_l(x)dx}{M}M∫R​gl​(x)dx​这么多的样本可以用gl(x)g_l(x)gl​(x)的计算代替f(x)f(x)f(x)的计算(这个原则叫Squeeze Principle),因此只要glg_lgl​计算复杂度足够低,并且与fff足够接近,Envelope Accept-Reject Algorithm的计算效率仍然可以得到很大提高
  4. 随机数的独立性分析:因为上面的算法中,每一步生成随机数与其他步骤都是可以互相独立的,所以最后得到的随机数可以有较强的独立性

Squeeze Principle给我们提供了另一种改进采样器的思路,从Algorithm 1的简单rejection采样到Algorithm 3 Accept-Reject Algorithm,我们通过提高接受率来提高采样器的效率;从Accept-Reject Algorithm到Envelope Accept-Reject Algorithm,我们通过降低计算量来提高采样器的效率;提高接受率、降低计算量是两种改进采样器的主流思路。

Atkinson’s Poisson Simulation

早期从Poisson分布中采样有两种主流方法,第一种方法是反函数法;第二种方法是使用Poisson过程法,这两种方法都比较低效。Atkinson (1979)基于Accept-Reject Algorithm提出了一种从Poisson分布中采样的方法。

考虑服从Logistics分布的随机变量XXX:
f(x)=1βe−x−αβ(1+e−x−αβ)2,F(x)=11+e−x−αβf(x) = \frac{1}{\beta}\frac{e^{-\frac{x-\alpha}{\beta}}}{(1+e^{-\frac{x-\alpha}{\beta}})^2},F(x)=\frac{1}{1+e^{-\frac{x-\alpha}{\beta}}}f(x)=β1​(1+e−βx−α​)2e−βx−α​​,F(x)=1+e−βx−α​1​

定义N=⌊x+0.5⌋N=\lfloor x+0.5 \rfloorN=⌊x+0.5⌋,考虑left-truncated Logistics分布,限制x∈[−0.5,+∞)x \in [-0.5,+\infty)x∈[−0.5,+∞),则
P(N=n)={11+e−n+0.5−αβ−11+e−n−0.5−αβ,x>1/2(11+e−n+0.5−αβ−11+e−n−0.5−αβ)1+e−0.5+αβe−0.5+αβ,−1/2<x≤1/2P(N=n)=\begin{cases} \frac{1}{1+e^{-\frac{n+0.5-\alpha}{\beta}}}- \frac{1}{1+e^{-\frac{n-0.5-\alpha}{\beta}}},x>1/2 \\ (\frac{1}{1+e^{-\frac{n+0.5-\alpha}{\beta}}}- \frac{1}{1+e^{-\frac{n-0.5-\alpha}{\beta}}})\frac{1+e^{-\frac{0.5+\alpha}{\beta}}}{e^{-\frac{0.5+\alpha}{\beta}}},-1/2<x \le 1/2\end{cases}P(N=n)=⎩⎪⎨⎪⎧​1+e−βn+0.5−α​1​−1+e−βn−0.5−α​1​,x>1/2(1+e−βn+0.5−α​1​−1+e−βn−0.5−α​1​)e−β0.5+α​1+e−β0.5+α​​,−1/2<x≤1/2​

Atkinson的想法是使用这个分布作为从Poisson分布(记参数为λ\lambdaλ)中采样的工具密度,根据Accept-Reject Algorithm的算法效率,α,β\alpha,\betaα,β的参数选择最好使得
λne−λn!P(N=n)\frac{\lambda^ne^{-\lambda}}{n!P(N=n)}n!P(N=n)λne−λ​

的上确界越小越好,也就是要求解
min⁡α,βsup⁡nλne−λn!P(N=n)\min_{\alpha,\beta} \sup_{n}\frac{\lambda^ne^{-\lambda}}{n!P(N=n)}α,βmin​nsup​n!P(N=n)λne−λ​

由此Atkinson推导出了Poisson分布的采样器:


Algorithm 5: Atkinson’s Poisson Sampler

Step 0: Define β=π3λ,α=λβ,c=0.767−3.36/λ,k=log⁡c−λ−log⁡β\beta = \frac{\pi}{\sqrt{3\lambda}},\alpha=\lambda \beta,c=0.767-3.36/\lambda,k=\log c-\lambda - \log \betaβ=3λ​π​,α=λβ,c=0.767−3.36/λ,k=logc−λ−logβ;
Step 1: Generate u1∼U(0,1)u_1 \sim U(0,1)u1​∼U(0,1) and calculate x=α−log⁡1−u1u1βx=\frac{\alpha-\log \frac{1-u_1}{u_1}}{\beta}x=βα−logu1​1−u1​​​if x>−0.5x>-0.5x>−0.5, go to Step 2; otherwise, repeat Step 1;
Step 2: Define N=⌊x+0.5⌋N=\lfloor x+0.5 \rfloorN=⌊x+0.5⌋ and generate u2∼U(0,1)u_2 \sim U(0,1)u2​∼U(0,1)
Step 3: if α−βx+log⁡u2(1+eα−βx)2≤k+Nlog⁡λ−log⁡N!\alpha-\beta x+\log \frac{u_2}{(1+e^{\alpha-\beta x})^2} \le k+ N\log \lambda - \log N!α−βx+log(1+eα−βx)2u2​​≤k+Nlogλ−logN!, accept NNN as a random number from Poisson(λ)Poisson(\lambda)Poisson(λ)


UA STAT675 统计计算I 随机数生成7 Envelope Accept-Reject Algorithm相关推荐

  1. UA STAT675 统计计算I 随机数生成8 Adaptive Rejection Sampling

    UA STAT675 统计计算I 随机数生成8 Adaptive Rejection Sampling Adaptive Rejection Sampling的几何展示 Adaptive Reject ...

  2. UA STAT675 统计计算I 随机数生成6 Accept-Reject Algorithm

    UA STAT675 统计计算I 随机数生成6 Accept-Reject Algorithm 随机模拟基本定理(Fundamental Theorem of Simulation) 根据随机模拟基本 ...

  3. UA STAT675 统计计算I 随机数生成2 线性递归模m与Multiple Recursive Generator (MRG)

    UA STAT675 统计计算I 随机数生成2 线性递归模m Multiple Recursive Generator (MRG) MRG设计方法 线性递归模m是最常用的一种算法RNG(random ...

  4. UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论

    UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论 RNG的抽象表示 RNG的质量指标 RNG的统计检测 在统计计算中,从某个分布中进行采样通常分为两个步骤: 生成随机数z1,z2 ...

  5. UA MATH566 统计理论 推导卡方拟合优度检验

    UA MATH566 统计理论 推导卡方拟合优度检验 卡方拟合优度检验主要是检验categorical data的,假设一共有ddd种category,每一种理论比例为pip_ipi​,满足 ∑i=1 ...

  6. UA MATH566 统计理论 Bayes统计基础

    UA MATH566 统计理论 Bayes统计基础 共轭分布 基于后验概率预测新的观测值 Bayes统计思想的基础是Bayes公式 P(Ci∣A)=P(A,Ci)P(A)=P(A∣Ci)P(Ci)∑i ...

  7. UA MATH566 统计理论 Fisher信息论的性质下

    UA MATH566 统计理论 Fisher信息量的性质下 辅助统计量的Fisher信息为0 分布族参数变换后的Fisher信息 统计量的Fisher信息的有界性 下面介绍一些Fisher信息量的常用 ...

  8. UA MATH566 统计理论 Fisher信息量的性质上

    UA MATH566 统计理论 Fisher信息量的性质上 Fisher信息量的定义 Fisher信息量的数学意义 C-R下界是由Fisher统计量定义的,在推导C-R下界的时候,我们只是把下界的逆定 ...

  9. UA MATH566 统计理论 Cramer-Rao不等式与Delta方法的联系

    UA MATH566 统计理论 Cramer-Rao不等式与Delta方法的联系 Delta方法与C-R不等式基本概念回顾 Delta方法近似 C-R不等式近似 推导Delta方法与C-R不等式近似相 ...

最新文章

  1. Effective C# 原则13:用静态构造函数初始化类的静态成员(译)
  2. 计算机伦理问题案例分析,基于网络环境的案例教学在《计算机伦理学》中的实践研究...
  3. 渗透测试报告标准编写
  4. python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化
  5. apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...
  6. php注册页面模板,选项卡式WordPress登陆注册模板
  7. python函数和方法的编写原则_跟老齐学Python之传说中的函数编写条规
  8. 修复win10的更新服务器,大师搞定win10系统自动更新失败的修复步骤
  9. [洛谷P4940]Portal2
  10. RSPapers | 工业界推荐系统论文合集
  11. 如何在苹果Mac更改通知显示的时长?
  12. Java三大特性的理解
  13. linux 下 pip 安装教程
  14. Windows查看所有的端口
  15. html怎么实现网页中文件下载功能
  16. Android Studio中关于消除“Permission is only granted to system apps”错误的方法
  17. MDK AC6开启FPU移植DSP库时报错Error: L6242E: Cannot link object arm_cos_f32.o as its attributes are incompat
  18. 手机访问WEB项目图片404
  19. 阿龙学堂-中缀-后缀表达式的计算
  20. 如何在贵金属白银现货走势分析中积累经验?

热门文章

  1. 【正一专栏】我的高考作文——在广州的乡下生活
  2. Java图片文本识别工具Eye实现(不支持中文)
  3. 数据结构源码笔记(C语言):冒泡排序
  4. 数据结构源码笔记(C语言):Josephus问题之循环链接表
  5. Explore Optimization
  6. Qt Designer设置背景图片、颜色不影响其它组件小技巧,控件层级设置,组件的继承,styleSheet设置样式。
  7. MPU6050姿态融合(转载)
  8. 基于51单片机的高频频率计的设计
  9. 两个栈来实现一个队列的C++代码
  10. 配置远程服务器jupyter