模拟随机变量
01区间均匀分布随机数的生成
更大的区间 更不同的分布的所有随机数生成都建立在01区间均匀分布随机数上
产生均匀分布随机数的方法很多 我们一般要求他们具有以下的性质
- 具有分布的均匀性
- 周期长 不会很快出现循环
- 计算简单 生成随机数不需要耗费过高的运算资源
生成随机数有三个基本方法 分别是使用随机数表(基本已经淘汰) 研究随机的物理过程(仅在一些小众场合使用) 数学递归的随机数生成手段
数学的递归手段是一种伪随机 他在经历过一定的运算后 一定会出现退化为0或者循坏
自然取中法
也叫做平方取中法 核心在于将基础的种子平方后取出中间的N位 然后除以10N 实现到01的区间的随机数
倍积取中法
自然取中法的衍生,将原本的平方取中更改为了成固定数后取中 如下
取定位数N=4;倍积K=5678;w0=1234
Kw0为自然生成数,取其中的四位然后除以
10N 实现到01的区间的随机数;
将取出的N位作为迭代的下一个种子 重复倍积取中
一阶线性同余法
它的迭代公式为
wn=k1∗wn−1 (modm)
其中k1,m 是迭代给定的数字 w0 是给出的种子 迭代产生的序列之需要除以m就可以回归目标的区间
自然可以推广出更加高阶的线性同余法
wn=k1∗wn−1+k2∗wn−2 (modm)
分布函数一定是单调的 我们定义分布函数的广义逆如下
FX−1(u)=inf{x;FX(x)⩾u},0⩽u⩽1.
我们很容易给出一个定理 他是我们逆变换法生成随机变量的基础
定理:设 U∼U(0,1),则Y=FX−1(U)的分布函数为FX(x).
离散型可能还复杂一下 我们这里给一点介绍
按照以下方式抽样 就可以满足我们的要求
X=⎩⎨⎧x0,U<p0,x1,p0⩽U<p0+p1,⋮xj,∑i=0j−1pi⩽U<∑i=0jpi,⋮
普通的离散型随机变量
我们先来介绍分布列很容易写出的离散型随机变量的模拟
对于这种只有有限个可能的离散型随机变量,每一个值都有对应的概率 我们可以直接使用sample函数进行抽样
无穷个取值可能的离散型随机分布
几何分布 二项分布都是这样的
对于这种情况 我们可以借助无限循环来处理 不断的累加概率 直到满足条件
连续性随机变量
直接按照我们给出的定理就可以处理
核心在于怎么求出反函数
舍选法(The Acceptance-Rejection Method)
逆变换需要研究广义的反函数 在很多的情况下不好处理(不如无法找到解析的分布函数,分布函数不好找广义逆) 这就是舍选法使用的目的
如果需要模拟的随机变量X的密度函数f(x)比较复杂 那么我们可以先找到一个和X同取值的随机变量Y 他有着密度函数g(x) 以f(Y)/g(Y)成比例的接受模拟到的值 从而实现对X的模拟
这个算法的直接原理并不难以理解 后面的问题是如何操作
算法原理
非常明显 我们接受的概率并不可能大于1 这意味着我们需要保证分子f(Y)更小
因此我们首先要求 存在常数C满足 也就是放大辅助概率密度函数
g(t)f(t)⩽C,∀t(使得 f(t)>0)
算法过程
- 从g(x)中产生随机数Y
- 从(0,1)上产生随机数U
- 如果U<Cg(Y)f(Y) 则接受Y 否则拒绝 然后返回第一步继续生成随机数
算法原理
某个抽选到的值被接受的概率为
p(accept∣Y=y)=p(U<Cg(Y)f(Y)∣Y=y)=p(U<Cg(y)f(y))=Cg(y)f(y).
那么被接受的概率可以使用全概率公式计算
p(accept)=y∑p(accept∣y)p(Y=y)=y∑Cg(y)f(y)g(y)=C1.
最后我们可以知道每个被接受的值对应的概率就是符合密度函数的
p(k∣accepted)=p(accepted)p(accepted∣k)g(k)=1/C[f(k)/(Cg(k))]g(k)=f(k).
这就是整个舍选法的工作原理
连续型的推导略去
注意事项
对于舍选法 选取我们的辅助函数g(x)是非常重要的
如果想要我们的抽样更加有效 也就是被抽出的值更加容易被接受 我们需要尽量控制C的大小
这意味着在选取辅助函数的时候 我们不仅需要结合前面学过的各种常见分布 找到取值范围一致的分布 并根据下面的方法计算C
C=max{g(x)f(x):x>0}
这个式子的原理并不难以理解 注意 我们有时候可以适当放大C 如果不好算
对于辅助函数的选取 可以首先找到一个目标区间可积连续函数t(x) 然后对这个函数进行归一化 也就是除以其在目标函数上的积分
合成法(The Composition Approach)
条件概率合成
合成法的思想在于 目标函数的概率分布(包括分布列形式和函数形式)p(x)不好进行抽样 但是条件分布 p(x∣y) 和 条件g(y) 容易确定 那么我们可以借助条件进行抽样工作
p(x)=p(x∣y)g(y)
事实上 条件抽样工作的进行和前面并没有区别 采用什么方法都可以
目标的抽样工作需要在条件抽样完成后 根据条件抽样结果的不同而产生结果的改变 但是本质还是一次普通的抽样
混合分布
事实上对于混合正态模拟我们往往采用合成法进行 他是我们下面要介绍的内容的一种
对于符合以下形式的分布
p{X=j}=αpj(1)+(1−α)pj(2).
f(x)=αf1(x)+(1−α)f2(x).
这样的随机变量可以用下面的形式得到
X={X1,X2,以概率α以概率1−α
这种问题可以直接进行推广到更多初选可能的情况
可以理解为每一个函数对最终函数的影响份额
F(x)=∑PiFi(x).其中Pi≥0∑Pi=1
分布函数也是一样的
是我们在其他书籍中见过的混合分布 也是很重要的一类分布
随机变量的函数合成
有时候我们需要研究的随机变量是另一个随机变量的函数 比如
eX;X+Y,UV
此时我们可以先从原始随机变量里面进行抽取
然后通过函数运算得到我们需要的随机数
变换法
非常多的分布可以使用其他的分布形式变换得到 这也可以用于我们的抽样
下面给出几个例子
1. 若Z∼N(0,1),则V=Z2∼χ2(1).2. 若U∼χ2(m),V∼χ2(n), 则F=V/nU/m∼F(m,n).3. 若Z∼N(0,1),V∼χ2(n), 则T=V/nZ∼t(n).
除此以外 用来得到正态分布本身也可以通过Box Muller变换来实现
有的分布可以通过绝对值变换后进行抽样 然后再恢复绝对值效果 对于某些分布区间在(−∞,∞) 的分布比较常用
Box Muller变换
一个很常用的变换手段 可以生成正态分布随机数 这里介绍一下
条件期望与条件方差
条件期望与方差是为了解决随机向量产生后我们需要研究的一些问题,除去那些独立的量以外,具有相关性的多个随机变量在某种条件下的期望与方差也值得我们的研究;在这里我们补充一些概率论中未能叙述的内容
条件期望实际上还是一个随机变量,是关于条件变动的随机变量,通过不断的变动条件,我们就能分治原本的空间
我们在这里需要理解的是,全期望公式(双重期望公式)是在条件期望被提出之后的非常重要的一环 ,就和我们以前研究过的全概率公式一样 我们现在可以用一个量对原有的样本空间进行划分 之后再去进行求期望 这种分治的思想是这个公式的核心
为了进行分治 我们肯定需要一种先后或者划分条件,下面的例子是用来帮助我们理解这种思想的
理论研究在概率论中已经有足够的介绍了
条件期望
矿工问题
一名矿工被困在有三个门的矿井里,第一个门通往一个坑道,沿此坑道走3个小时可以到达安全地点;第二个门会使他走5个小时后又回到原处;第三个门会使他走7个小时后也回到原处。假定该矿工在任何时刻等可能地选定其中一个门. 求他到达安全地点平均需要多长时间?
设X为矿工到达安全地点所需时间Y 表示所选的门,则
E[X]又E[X∣Y=1]=E[E[X∣Y]]=E[X∣Y=1]P{Y=1}+E[X∣Y=2]P{Y=2}+E[X∣Y=3]P{Y=3}=3,E[X∣Y=2]=5+E[X],E[X∣Y=3]=7+E[X]
带入进行求解得到 平均时间为15小时
几何分布的均值与方差
若第一次成功,则令Y=1,否则令Y=0..
可知E(X∣Y=1)=1,E(X∣Y=0)=E(1+X)=1+E(X)
双重期望公式得
E[X]=E[E[X∣Y]]=E[X∣Y=1]P{Y=1}+E[X∣Y=0]P{Y=0}=p+E(X+1)(1−p)=p+[E(X)+1](1−p)
解方程就可以得到均值 E[X]=p1
对于处理方差的问题 我们通过研究E[X2]来研究它
E[X2]=E[E[X2∣Y]]=E[X2∣Y=1]P{Y=1}+E[X2∣Y=0]P{Y=0}=p+E(X+1)2(1−p)=p+[E(X2)+2E(X)+1](1−p)=p+(1−p)E(X2)+2p1−p+(1−p)
解方程就可以得到E[X2]=p22−p 套公式运算就能得到方差
使用 Var(X)=E[X2]−E[X]2
求解二元正态分布的相关系数
f(x,y)=2πσxσy1−ρ21exp(−2(1−ρ2)1[(σxx−μx)2−2ρσxσy(x−μx)(y−μy)+(σyy−μy)2]).
我们需要证明他的相关系数是ρ
Corr(X,Y)=σxσyCov(X,Y)=σxσyE(XY)−μxμy
求解相关系数的核心在于E(XY)
我们还是通过全期望公式的思想 先确定变量中的一个来简化原始问题
E(XY∣Y=y)=E(Xy∣Y=y)=yE(X∣Y=y)=y[μx+ρσyσx(y−μy)]=yμx+ρσyσx(y2−μyy)
条件密度函数也是正态分布 所以条件均值容易求解
借助全期望公式得
E(XY)=E[E(XY∣Y)]=E[Yμx+ρσyσx(Y2−μyY)]=μxE(Y)+ρσyσxE(Y2−μyY)=μxμy+ρσyσxVar(Y)=μxμy+ρσxσy.
这就是前面问题的处理思路 要理解我们这里使用的处理方法
全期望公式反推全概率公式
通过引入示性随机变量X 满足
X={10若A 发生若A 不发生
我们容易知道 E(X)=P(A)
再进行全期望公式的处理有P(A)=E(X)=E(E(X∣Y))
因此有
P(A)={∑yE(X∣Y=y)P(Y=y)=∑yP(A∣Y=y)P(Y=y)∫E(X∣Y=y)fY(y)dy=∫P(A∣Y=y)fY(y)dy
如果我们在前面随机变量的基础上定义事件,那么这就是全概率公式,前面提到过的分治思想的体现
一个经典的例子
X Y 是独立的随机变量
P{X<Y}=∫P{X<Y∣Y=y}fY(y)dy=∫P{X<y∣Y=y}fY(y)dy=∫P{X<y}fY(y)dy=∫FX(y)fY(y)dy
这样我们就可以取代那些繁杂的积分运算 从而快速的得到结论;
卷积公式等很多类似的问题都可以这样进行处理
在使用这种方式的时候 要搞明白符合的意义
前者是X自己单独的分布函数带入y 后者是y的密度函数
另一个有趣的例子
令U1 U2...是一个独立均匀分布序列 他们均服从(0,1)上的均匀分布 令N=min{n:k=0∑k=nUk>1} 求E(N)
考虑更加一般的情况 我们给出N(x)表示随机数和超过x的个数
令m(x)=E(N(x))
容易得到 根据全期望公式
m(x)=E[N(x)]=∫01E[N(x)U1=y]dy.
E[N(x)∣U1=y]={1, y>x;1+m(x−y),y⩽x.
所以
m(x)=∫0x[1+m(x−y)]dy+∫x1dy=1+∫0xm(x−y)dy=1+∫0xm(u)du.(令 u=x−y)
两边求导得到
m′(x)=m(x),即m(x)m′(x)=1.
处理微分方程并且确定C后得到
m(x)=ex
条件方差
条件方差的定义 Var(Y∣X)=E[(Y−E[Y∣X])2∣X]
统计方差公式 Var[Y]=E[Var(Y∣X)]+Var[E(Y∣X)]
在整个条件概率,条件期望,条件方差这一部分中,离散型的最好处理方法还是把分布列写出来,根据要求进行书写,而不是使用前面给出的这些公式,前面的这么多方法更多的被用在连续型随机变量和那些分布列不容易写出的随机变量中,毕竟分布列是离散型的核心,是研究一切离散型随机变量的根基
对于条件概率的问题 需要知道根据条件概率公式只是一般针对连续性的处理方法 对于离散型分布而言 我们在已知分布列的情况下 只需要计算条件发生的概率 再计算事件发生的概率 最后作比就可以了 对于条件方差问题 我们需要处理的问题并不发生本质变化 还是对公式的套用(使用最基础的方差公式运算 而不是条件方差公式) 耐心才是处理这一类问题中最需要的东西 离散型的问题通常繁琐但是不困难
有效抽样次数
在这里我们简单的研究一下 如果想要达到预设的精度 我们需要进行多少抽样的问题 我们在这仅仅研究对数学期望 也就是一阶原点矩的估计问题 更复杂的问题留到以后再处理
本质上有效抽样次数这一小章是对数理统计中有效性的分析 后面的方差减小技术也是如此
有效抽样次数的确定
假设X1,X2,⋯,Xn 是一组独立同分布的样本 他有均值μ和方差σ2
我们可以估计得到
E(X)=μ,并且Var(X)=E[(X−E(X))2]=nσ2.
非常明显的 我们知道估计X是无偏的 当nσ2. 越小的时候 估计越有效 这意味着我们的估计均方误差较小 均方误差较小已经成为了现代数据分析中对估计要求的最重要一点
对于样本方差σ2 我们使用无偏估计形式
S2=n−11i=1∑n(Xi−X)2
有了衡量偏差大小的手段 我们进行有效抽样次数的研究就很容易了
- 确定适当的小正数d作为估计量的标准误差
- 至少抽取100个样本
- 连续抽取新的样本 直到nS≤d
- 得到估计量X
整个算法的设计非常自然并且容易进行
改进的有效抽样次数确定
每次计算方差S2来验算是否满足不等式是计算量非常巨大的 尤其是抽样数量上升后 这里给出迭代公式来减少计算量的需求
Xj+1=Xj+j+1Xj+1−Xj,Sj+12=(1−j1)Sj2+(j+1)(Xj+1−Xj)2.
使用迭代公式可以避免每次重新计算样本方差
可以减少计算资源的消耗
对于样本方差是样本期望的函数的情况(比如01分布)
我们应该在迭代过程中计算样本均值用函数得到样本方差
直接计算方差对计算资源的消耗是比较大的
方差缩减技术
Monte Carlo 方法是一大类方法 他不仅仅包括Monte Carlo积分中介绍的方法,整个基于随机模拟实现的概率问题解决方法都属于Monte Carlo方法的一种
我们可以大致把Monte Carlo方法处理的问题分为两大类
- 需要解决的问题本身存在随机性,比如核物理和分子运动模拟
- 需要解决的问题可以转化为某种分布的特征数 比如Monte Carlo积分
在第二类问题中 我们实际上在构造统计量(估计量)进行问题的研究,确定估计的诸如无偏性 有效性是比较重要的 他们可以评估我们的估计设计是否合理
在无偏的基础上 均方误差等价于方差 方差减少技术这一章节就是在研究方法希望减少最后估计量的方差可以试用的方法 提升估计的有效性
我们可以综合使用后面介绍的方法 同时使用多种 这样能起到更好的降低方差的作用
定义 方差的缩减率
Var(θ^)Var(θ^)−Var(θ^ϵ⋅)
随机投点和样本均值法的有效性比较
对于一个非常标准的定积分问题
θ=∫abf(x)dx.
随机投点法给出的估计是
θ^1=θ^=M(b−a)nn0.
n0符合两点分布 所以计算方差得到
Var(θ^1)=n2M2(b−a)2Var(n0)=nθ[M(b−a)−θ].
类似的原理能得到样本均值法的估计和方差
θ^2=θ~=n1i=1∑ng(Xi)f(Xi)=nb−ai=1∑nf(Xi).
Var(θ^2)=Var[n1(b−a)i=1∑nf(xi)]=n1[(b−a)2∫abf2(x)b−a1dx−θ2]=n1[(b−a)∫abf2(x)dx−θ2].
作差比较能得到 样本均值法的方差更小 这意味着估计的有效性更好
是否能通过某些手段来继续提高有效性 这就是我们这后面要展开研究的问题
重要抽样法
引入重要抽样法
对于样本均值法
θ=∫abg(x)f(x)g(x)dx=Eκ[g(X)f(X)].
抽样并估计有
θ~=n1i=1∑ng(Xi)f(Xi).
直接计算方差有
Var(θ^)=n1[Eκ(g(X)f(X))2−θ2].
这个计算结果告诉我们 辅助抽样用分布g(X)和原始分布f(X)满足g(x)=θf(x) 时我们有最小的方差 当然θ是未知的 这当然不可能 不过 我们可以让他们两者尽可能接近
这就是重要抽样法的思想 把原本使用的均匀抽样进行改变 让对估计更加有效的样本更多的出现 从而增加估计的有效性
现在我们给出一个简单的例子来说明我们猜测确实是有道理的
考虑积分θ=∫01exdx. 采用两种MC方差进行尝试
对于样本均值法
Var(θ^)=n1[∫01e2xdx−(e−1)2]=n1[21( e2−1)−( e−1)2]=n0.242.
对于重要抽样法的改进 我们使用
原始函数的Taylor展开并且规范化的32(1+x)=g(x)
Var(θˉ)=n1[∫01g(x)f2(x)dx−(e−1)2]=n1[∫01231+xe2xdx−(e−1)2]=n0.0269
重要抽样法确实起到了降低方差的作用
重要抽样法和倾斜密度函数
重要抽样法
在一般意义下 对于符合密度函数f(x)的随机变量X 对于估计
θ=Ef[h(X)]=∫abh(x)f(x)dx.
重要抽样法便是从样本均值法中进行衍生 找到新的X的分布函数g(x)
θ=∫abg(x)h(x)f(x)g(x)dx=Ek[g(X)h(X)f(X)].
在实际的模拟中
θ^=n1i=1∑ng(Xi)h(Xi)f(Xi)
只要选取合适的g(x)就能实现减少方差的作用
倾斜密度函数
对于原始分布的矩母函数
M(t)=Ef[etX]=∫etxf(x)dx
我们构造如下形式称为原始分布的倾斜密度函数
ft(x)=M(t)etxf(x)
要知道 倾斜密度函数本质上是一族函数 我们要选取合适的t 才能确定需要的函数 怎么确定这个t呢 让它接近我们需要侧重抽样的位置
下面介绍几个比较特殊的分布的倾斜密度函数
如果f(x)是参数为λ的指数分布 则ft是参数为λ−t的指数分布
如果f(x)是参数为p的二项分布 则ft是参数为pet+1−ppet的二项分布
如果f(x)是参数为(μ,σ2)的正态分布 则ft是参数为(μ+σ2t,σ2)的正态分布
只要会求矩母函数这里都很好计算
重要抽样法与小概率事件模拟
我们这里给出一个例子 以后如果遇到类似的问题也可以进行类似的处理
X∼N(0,1), 欲通过模拟方法估计 θ=P(X⩾20).
直接进行模拟 我们只能得到概率为0的奇怪的答案 这其实是因为这个概率实在是太低了 大概为e−89这个数量级 所以我们直接模拟根本得不到需要的答案
事实上 原始问题等价于
θ=E(I{X⩾20})
没错 事实上也是一个研究期望的问题,只是从正态分布中抽样 然后大于20的当作1 剩下的作为0 然后对向量进行求期望的操作
现在我们来使用重要抽样法修正这个抽样操作
原始的正态分布是f(x) h(x)=I{X⩾20} g(x)是计算得到的倾斜密度函数
现在有
θ=Ef[h(X)]=∫−∞∞h(x)f(x)dx=∫−∞∞g(x)h(x)f(x)g(x)dx=∫−∞∞I(x⩾20)⎩⎨⎧2π1e−2(x−μ)22π1e−2x2⎭⎬⎫2πe−2(x−μ)2dx=∫−∞∞I(x⩾20)e−μx+μ2/22π1e−2(x−μ)2dx=Eg[I(X⩾20) e−μX+μ2/2],
我们只需要从新的倾斜密度函数中抽样 然后模拟计算均值就可以了
上机运行可以发现 使用重要抽样法以后 我们只需要使用少量的模拟次数就可以实现原本非常高的模拟次数就可以达到的效果
分层抽样法
我们这里着重介绍积分的MC方法的分层抽样 其他问题形式转化为这个问题形式进行解决
分层抽样法也是利用贡献率来降低估计方差的方法,我们一般先把整个区间分成若干部分 计算他的权重 然后分配抽样次数 借助这样的方法提高抽样的效率
核心思路介绍
对于积分θ=∫01f(x)dx 我们把积分区间分成m个小区间 端点记作ai 则
θ=∫01f(x)dx=i=1∑m∫ai+1aif(x)dx=i=1∑mIi.
再记li=ai−ai−1 使用样本均值方法就可以计算Ii 然后就能计算我们需要的估计θ 并且有 θ~3=∑i=1inI^i.
非常明显的 我们知道
E^Ii=Ii
Var(θ^3)=Var{i=1∑mnilij=1∑nif(Xij)⟩=i=1∑mnili2σi2.
其中
σi2=∫ai−1ailif2(x)dx−(liIi)2.
核心定理
在σ2,li,n都已知的情况下 当进行如下的分配方式时候
nni=∑j=1mljσjliσi
估计的方差最小 为n1[∑j=1mljσj]2.
一些补充的证明过程
根据前文给出的结论
Var(θ^3)=i=1∑mnili2σi2=n1l12σ12+n2l22σ22+⋯+nm−1lm−12σm−12+n−n1−n2−⋯−nm−1lm2σm2.
针对每一个ni 求偏导研究极小化问题都有
n1l1σ1=n−n1−n2−⋯−nm−1lmσm.
根据等比性质有
n1l1σ1=n2l2σ2=n3l3σ3=⋯=nm−1lm−1σm−1=n+n1−n2−⋯−nm−1lmσm=n∑i=1mliσi
也就是此时取得方差最小化
带回各个量便能计算出最后的极小化方差
对于抽样区间划分的问题 执行区间等分是最简单并且常用的
关于抽样次数的分配问题 哪怕是根据区间长度进行等比例的分配 依然不会产生更大的方差
总结
我们需要首先进行一次预抽样 根据预抽样的结果计算方差等数据 然后按照要求在预抽样的结果上进行抽样比例的分配 然后用新的比例继续使用均值法计算我们需要的估计就可以了
这里我们不继续推广方法的使用范围 如果希望使用分层抽样法 那么先把问题转化为Monte-Carlo积分问题就可以了
连续函数的期望就是一个积分问题
对偶变量法
思路引入
如果我们对θ=E[X]感兴趣 并且有X1,X2同分布并且都有均值θ 那么我们能得到
Var(2X1+X2)=41[Var(X1)+Var(X2)+2Cov(X1,X2)].
只要X1,X2负相关 就可以得到更低的方差 但是 他仍然是无偏估计
E(2X1+X2)=θ.
这就是我们对偶变量法的核心操作思路 现在需要解决的就是构造一个这样的随机变量
处理方法
我们先介绍两个需要用到的定理
定理:对于独立随机变量X1,X2...Xn相互独立,对于一元增函数f,g 则对于任意的x≥y 有
E[f(X)g(X)]⩾E[f(X)]E[g(X)].
推论:如果h(x1,x2,⋯,xn) 是他每个自变量的单调函数 则对随机数集合U1,U2...Un 有
Cov[h(U1,U2,⋯,Un),h(1−U1,1−U2,⋯,1−Un)]⩽0.
现在就可以用这样的定理尝试构造对偶变量了
假设X1=h(U1,U2...Un) 其中Ui是独立随机数 那么我们构造X2=h(1−U1,1−U2...1−Un) 容易知道U,1−U同分布 并且Cov(U,1−U)=−121.
如果h是每个坐标的单调函数,那么X1,X2 同分布并且负相关 则称两者互为对偶变量
对偶变量法能够减少估计量的方差 并且可以减少前文分层抽样两次抽取随机数的性能开销
本质上就是样本均值法 只是在抽样上进行了改进
当然这个改进也是有代价的 我们不得不控制自己只能在 [0,1]区间上进行抽样
举例说明
我们用一个例子说明对偶变量法的使用 以后来模仿这个例子的方法
用对偶变量法估计积分θ=∫01exdx=e−1.
非常明显的 h(x)=ex 是一个一元单调函数 这个区间也符合我们进行对偶变量求解的要求
那么对于估计量X1 我们设计为eU 估计量X2 设计为 e1−U 所以这样构造符合我们使用对偶变量的要求
因此最后的估计量为
(2eU+e1−U)
我们人工抽取U 通过对偶的方式得到另一部分随机数 最后组成我们的估计量
对于类似的在这样的(0,1)区间 进行积分的问题都可以进行这样的处理
对偶变量使用的条件只有两个 积分区间(0,1) 被积函数单调
对于一些别的情况 我们可以转化一下 满足使用对偶变量法求解的要求
计算以下积分
ϕ(x)=∫−∞x2π1e−t2/2dt.
这是一个无穷区间的积分问题 我们在蒙特卡洛方法刚开始就说了要考虑转换
非常明显的 如果 x<0 我们可以考虑求 [0,−x] 上的积分 然后和21 作差
对于 x>0 我们可以考虑求 [0,x] 上的积分 然后加上21
也就是问题归结为
Φ(x)=∫0x2π1e−t2/2dt.
然后我们作y=xt 的代换 这样就把积分区间缩放回到[0,1]
问题现在是求
θ=∫01xe−(xy)2/2dy.
非常明显的 这里满足对y单调和[0,1]区间的条件 可以使用对偶变量法
控制变量法
理论介绍
这里我们直接使用期望的思路来处理,MC积分问题直接转化为期望进行研究 样本均值法就行
在前面 θ=E[h(X)] 的估计是n1∑h(Xi) 现在我们构造一个新的分布 f(X) 并且μ=E[f(X)]
现在我们构造Y=h(X)+c[f(X)−μ], 容易知道 E(Y)=θ 研究方差得到
Var(Y)=Var⟨h(X)+c[f(X)−μ]⟩=Var[h(X)]+c2Var[f(X)−μ]+2cCov⟨h(X),f(X)−μ⟩=Var[h(X)+c2Var[f(X)+2cCov[h(X)f(X)].
为了减少方差 我们继续化简
Var(Y)=c2Var[f(X)]+2cCov[h(X),f(X)]+Var[h(X)]=Var[f(X)]c+Var[f(X)]Cov[h(X),f(X)]2+Var[h(X)]−Var[f(X)]Cov2[h(X),f(X)].
因此我们已经找到了最后可以缩减方差的方法
c=c∗=−Var[f(X)]Cov[h(X),f(X)]
现在问题已经转化为了这个具体的c∗ 该怎么计算;非常明显的,我们还是得先进行一个模拟 计算这里的方差和协方差 公式如下
Cov[h(X),f(X)]=n−1i=1∑n{[h(xi)−hˉ][f(xi)−μ]},Var[f(X)]=n−1i=1∑n[f(xi)−u]2.
这样的叙述基本已经够清楚了 能够处理的问题的范围也都已经介绍详细
例子
用控制变量法给出θ=E[e(U+V)2] 的估计 其中U,V是独立的U(0,1) 控制变量选取为 f=(U+V)2
这里我们一般会采用逐渐增加随机数的办法来实现模拟
我们需要在新的随机数生成的时候来重新计算 均值μ 和 控制数 c
下面我们用代码来叙述一下
条件期望法
理论
条件期望公式知道
Var(X)=E[Var(X∣Y)]+Var[E(X∣Y)],
那么由于非负性能确定
Var(X)⩾Var[E(X∣Y)].
这么来看条件抽样比直接抽样更加有效 因为我们知道
E[E(X∣Y)]=EX=θ.
双重期望公式保证了哪怕我们增加了一层条件抽样(同时需要套一层期望)还是一个无偏估计
这个结论适用范围就比较大了 只要构造一种条件 然后通过两层模拟的方式处理两层期望就可以了
请注意 条件期望法比较特殊 他需要我们进行一定的理论推导才能使用;如果本身题目里有关于条件的内容 直接顺着他的条件进行抽样模拟那和我们前面直接模拟是没什么区别的
例子
假定Y是均值为1的指数分布随机变量 在Y=y条件下 X∼N(y,4) 模拟θ=p{X>1}
最直接的模拟方法就是
先生成随机数y 根据生成的y模拟随机变量X 然后看满足条件的个数标准I 最后求E(I)
这不是我们的条件期望法 下面才是!
作变形构造正态变量方便后面分析
Z=2X−y,
对条件期望作理论分析有
E[I∣Y=y]=P⟨X>1∣Y=y⟩=P{Z>21−y}=Φ(21−y),
理解我们的第一步等式 这个期望就是和这个概率相等的
对y 进行抽样 然后计算期望
这才是条件期望法能减少方差的操作步骤
我们知道条件期望那两层分布的情况 否则条件期望那一步理论推导推不出来
另一个例子
用条件期望求解 θ=E[eXY] 其中随机变量 X,Y 都服从 b(n,p)
我们还是需要先确定条件期望 E[eXY∣X=x]
E(eXY∣X=x)=E(exY)=y=0∑∞exy⋅Cnypy(r−p)n−y=∑(exp)y(1−p)n−y=(exp+1−p)n
然后在对y求期望 还原会我们需要求的期望