前言
使用教材:马文淦《计算物理学》,限于篇幅,这本书上部分知识写得并不十分详细,根据我复习时的一点想法,分享给大家参考。
本篇分享的是连续分布的随机变量抽样的几种方法(直接、变换抽样法,三类舍选法,复合抽样法,课本2.3节)。
〇、前置知识
首先不防问自己一个问题,我们为什么要了解这块知识?
物理模拟中经常要对某个随机变量(比如速度,位置,方向)抽样,它们都满足某个分布(比如一定温度下微观粒子运动速度满足玻尔兹曼分布),问题就是如何产生满足某个分布的随机变量。
一般来说编程时我们能够调用的随机变量的生成函数,无非是几个最典型的,比如均匀分布,正态分布等等,这是远远不够我们使用的,所以要学会自己做符合想要的分布的随机变量抽样,这就是这块知识目的所在。
因此需提前掌握伪随机数及其生成方法。
(说是伪随机数是因为计算机并不能生成真随机数,任何代码生成的随机数都会有周期,只不过周期长短有别。我们使用的伪随机数周期一般较长,可近似认为是随机数。)
假设变量 η \eta η是一个随机数,那么在选定的随机数生成范围内,生成每一个数的几率是相同的,也就是说 η \eta η满足均匀分布。下面几种方法都是建立在掌握均匀抽样的基础上,通过变量代换(变换抽样法)或按某种方式舍弃部分数据(舍选法)来生成自己想要的分布的。
一、直接抽样法
先看课本:
分布密度函数,现在的说法叫概率密度函数,表示的就是抽到这个数的概率,概率密度函数越高的地方抽到的可能性越大。同时密度函数也是分布函数的导数,对应可知分布函数上升较快的区间对应抽样抽到的概率也很大,如下图所示。
有了这两幅
η
\eta
η的分布图,我们先定性地理解一下直接抽样法:
1、首先在纵轴[0,1]范围内均匀抽样,记作
ξ
\xi
ξ;
2、分布函数值为
ξ
\xi
ξ的点的横坐标就是
η
\eta
η,即为最终抽样的结果。
ξ
\xi
ξ均匀抽样抽到[0.1,0.9]区间内的概率为0.8,对应的
η
\eta
η为[-0.1,0.1]区间上,短短区间长度0.2竟有这么大的概率,可见是与概率密度函数符合的。
但这毕竟只是定性分析,究竟符不符合呢?可以证明这种抽样方法 η \eta η确实满足的分布函数是F(x),具体方法见上面的课本内容。
附课本例题:
二、变换抽样法
直接抽样法其实是一种由均匀抽样变换为所期望的随机抽样的特例,具体为什么,且看下文~
现在我们提出一个问题,看似所有的随机变量都有概率密度函数f(x),那么对其积分就一定能得到分布函数F(x),再用直接抽样,非常自然。所以这意味着所有的随机抽样都可以用这种方法吗?
答案是否定的,上面的分析忽略了不是所有的F(x)都能用解析表达式表达出来,它确实存在,也可以画出图像,但就是无法解析表达,这种情况就不能用直接抽样,而要用更一般的变换抽样法。
上课本!
极简版: η = g ( δ ) \eta=g(\delta) η=g(δ),对 δ \delta δ抽样然后代入即可。
我对变换抽样法的理解(叙述顺序可能与课本不同):
首先,
η
\eta
η是我想抽样的变量,它的概率分布函数是
f
(
x
)
f(x)
f(x)。假如我事先知道某个随机变量
δ
\delta
δ的抽样方法,它是均匀分布,还是指数分布、正态分布等等都无所谓,但一定要知道怎么对它抽样,同时我又知道
δ
\delta
δ和
η
\eta
η之间的关系:
η
=
g
(
δ
)
\eta=g(\delta)
η=g(δ)和
δ
=
h
(
η
)
\delta=h(\eta)
δ=h(η)(这里请体会一下,函数关系意味着一个
δ
\delta
δ的抽样可以唯一确定对应的
η
\eta
η的抽样。另外,不是所有函数都有反函数的,这也就要求
δ
\delta
δ和
η
\eta
η一一映射),那么我就先对
δ
\delta
δ抽样,再代入
η
=
g
(
δ
)
\eta=g(\delta)
η=g(δ)就得到了
η
\eta
η的抽样。
那么这 “ 某个随机变量
δ
\delta
δ ” 是不是真的随便哪一个变量都行?
记
δ
\delta
δ的概率密度函数为
ϕ
(
x
)
\phi(x)
ϕ(x),
η
\eta
η的记为
f
(
x
)
f(x)
f(x),由
η
=
g
(
δ
)
\eta=g(\delta)
η=g(δ)结合概率论知识可知,
f
(
x
)
=
ϕ
(
h
(
x
)
)
⋅
∣
h
′
(
x
)
∣
f(x)=\phi(h(x))\cdot|h'(x)|
f(x)=ϕ(h(x))⋅∣h′(x)∣,所以要求
h
′
(
x
)
h'(x)
h′(x)存在,即
h
(
x
)
h(x)
h(x)可导。
所以可知,重点在于:
1、找到已知抽样方法的变量
δ
\delta
δ和未知抽样方法的变量
η
\eta
η之间的关系
η
=
g
(
δ
)
\eta=g(\delta)
η=g(δ)和
δ
=
h
(
η
)
\delta=h(\eta)
δ=h(η),两个函数都要存在,他俩一一映射;
2、
h
(
x
)
h(x)
h(x)可导。(这里
h
(
x
)
h(x)
h(x)括号里的变量是x是
η
\eta
η其实无所谓的,可以体会一下)
而难点在于:找到
η
=
g
(
δ
)
\eta=g(\delta)
η=g(δ)和
δ
=
h
(
η
)
\delta=h(\eta)
δ=h(η)。
δ \delta δ为[0,1]上均匀分布时, η = g ( δ ) = F − 1 ( δ ) \eta=g(\delta)=F^{-1}(\delta) η=g(δ)=F−1(δ),对 δ \delta δ均匀抽样反解出 η \eta η,退化为直接抽样法。
理解后再看课本对二维的叙述就不难了(课本的正态分布是个很好的例子,建议仔细看看):
三、舍选法
舍选法分为第一、二、三类舍选法,我认为是比较难理解的地方,一些想法如下:
1.第一类舍选法
舍选就是对均匀抽样的结果以 f ( x ) f(x) f(x)的概率保留。 f ( x ) f(x) f(x)是概率密度。
通常我们对随机抽样的理解是,概率密度大的地方抽的多点,概率密度小的地方抽的少点,这样就能够满足概率密度函数,也就是我们想要的分布了。重点在于它是控制每一处被抽到的概率。
下面换一种方法:假设每一处被抽到的概率是相同的,这样就是均匀分布,概率密度函数是一条直线,这不是我们想要的。在抽样后,我们再根据想得到的概率密度函数,对抽到的数据进行不同程度的舍弃,概率密度函数大的地方少舍弃一点,小的地方多舍一点。根据这个思路,人们发明了第一类舍选法。
具体步骤我就搬运课本了:
稍作解释:(a)步骤就是我说的“假设每一处被抽到的概率是相同的,这样就是均匀分布”,(b)步骤就是我说的“根据想得到的概率密度函数,对抽到的数据进行不同程度的舍弃,概率密度函数大的地方少舍弃一点,小的地方多舍一点”。 λ \lambda λ的作用是控制概率的最大值为1,对应该处数据不会被舍弃。
舍选法由于是通过非常简单的均匀抽样再舍选得到的,计算量小,速度快,避免了由于变换抽样法导致的大计算量的问题。但同时也引入了一个新的问题:由于舍弃部分数据导致抽样效率可能不高。尤其是概率密度函数在某处极端的高的情况,这会导致极大部分数据被舍弃,抽样效率极低,这就有必要引入第二类舍选法了。
2.第二类舍选法
还记得变换抽样法吗?当时为了对一个复杂变量抽样,我们先对一个已知的,简单的变量抽样,再做变换。同样的道理,如果某个变量用第一类舍选法效率很低,那我们就先对效率高的变量用舍选法,再做变换。
课本的叙述:
个人理解:
首先,既然想把低效率的抽样转化成高效率的抽样,那就做恒等变换
f
(
x
)
=
f
(
x
)
h
(
x
)
⋅
h
(
x
)
=
=
=
=
=
g
(
x
)
=
f
(
x
)
h
(
x
)
g
(
x
)
h
(
x
)
f(x)=\frac{f(x)}{h(x)}\cdot h(x)\overset{g(x)=\frac{f(x)}{h(x)}}{=====}g(x)h(x)
f(x)=h(x)f(x)⋅h(x)=====g(x)=h(x)f(x)g(x)h(x),但这还不行,
g
(
x
)
g(x)
g(x)是待会儿做筛选舍取用的,要控制最大值为1。因此,用常数L来调整:
f
(
x
)
=
L
⋅
f
(
x
)
L
h
(
x
)
⋅
h
(
x
)
=
L
g
(
x
)
h
(
x
)
f(x)=L\cdot \frac{f(x)}{Lh(x)}\cdot h(x)=Lg(x)h(x)
f(x)=L⋅Lh(x)f(x)⋅h(x)=Lg(x)h(x)。
重点理解上式 f ( x ) = L g ( x ) h ( x ) f(x)=Lg(x)h(x) f(x)=Lg(x)h(x)。概率密度函数就把他理解成概率,L不用管它,就是把最大值归一(概率嘛)的一个系数。如果用第一类舍选法,抽到的数据被保留下来的概率为 λ f ( x ) \lambda f(x) λf(x)(同样的,不用管 λ \lambda λ),那么 f ( x ) = L g ( x ) h ( x ) f(x)=Lg(x)h(x) f(x)=Lg(x)h(x)就可理解为把概率分解成两个概率相乘。操作上可以理解为先由 h ( x ) h(x) h(x)做一次舍选,得到的结果再根据 g ( x ) g(x) g(x)做一次舍选。
先对满足 h ( x ) h(x) h(x)的变量抽样(变换抽样、舍选均可),因为抽出来的结果肯定满足 h ( x ) h(x) h(x)的概率密度,因此只要再根据 g ( x ) g(x) g(x)做舍选,就能得到最终结果了。最终的抽样结果和直接第一类舍选法结果一样,但抽样效率增加。
附课本例题:
3.第三类舍选法
最难理解的一类舍选法,课本上的叙述也及其抽象:
第二类舍选法中,先根据
h
(
x
)
h(x)
h(x)抽样,再根据
g
(
x
)
g(x)
g(x)舍选,而第三类舍选法中,先根据
g
(
x
)
g(x)
g(x)抽样,再根据
h
(
x
)
h(x)
h(x)舍选,是反过来的,这里注意一下。
课本2.3.38式变形为 f ( x ) = L ⋅ ∫ − ∞ h ( x ) g ( x , y ) d y ∫ − ∞ ∞ g ( x , y ) d y ⋅ ∫ − ∞ ∞ g ( x , y ) d y f(x)=L\cdot\frac{\int_{-\infty}^{h(x)}g(x,y)dy}{\int_{-\infty}^{\infty}g(x,y)dy}\cdot \int_{-\infty}^{\infty}g(x,y)dy f(x)=L⋅∫−∞∞g(x,y)dy∫−∞h(x)g(x,y)dy⋅∫−∞∞g(x,y)dy,类比第二类舍选法中 f ( x ) = L g ( x ) h ( x ) f(x)=Lg(x)h(x) f(x)=Lg(x)h(x),我特地调整了乘的顺序,这下对比起来有种一目了然的感觉了。
最后我们再分析一下为什么步骤(b)是判别 η y ≤ h ( η x ) \eta_y \leq h(\eta_x) ηy≤h(ηx):把 ∫ − ∞ h ( x ) g ( x , y ) d y ∫ − ∞ ∞ g ( x , y ) d y \frac{\int_{-\infty}^{h(x)}g(x,y)dy}{\int_{-\infty}^{\infty}g(x,y)dy} ∫−∞∞g(x,y)dy∫−∞h(x)g(x,y)dy理解为概率,[- ∞ \infty ∞,h( η x \eta_x ηx)]内的 η y \eta_y ηy保留下来,不是这个区间的舍取,可以保证保留下来的概率是 ∫ − ∞ h ( x ) g ( x , y ) d y ∫ − ∞ ∞ g ( x , y ) d y \frac{\int_{-\infty}^{h(x)}g(x,y)dy}{\int_{-\infty}^{\infty}g(x,y)dy} ∫−∞∞g(x,y)dy∫−∞h(x)g(x,y)dy。
当 x x x和 y y y独立时, g ( x , y ) g(x,y) g(x,y)可以拆分为 f 1 ( x ) ⋅ f 2 ( y ) f_1(x)\cdot f_2(y) f1(x)⋅f2(y),假设 f 2 f_2 f2的积分是 F 2 ( x ) F_2(x) F2(x),则 ∫ − ∞ h ( x ) g ( x , y ) d y = f 1 ( x ) ⋅ F 2 ( h ( x ) ) \int_{-\infty}^{h(x)}g(x,y)dy=f_1(x)\cdot F_2(h(x)) ∫−∞h(x)g(x,y)dy=f1(x)⋅F2(h(x)),代入2.2.38式会发现退化成了第二类舍选法,实际上,第二类舍选法确是第三类舍选法的特例。这也是我理解第三类舍选法的切入点。
附课本例题:
文章来源:https://www.toymoban.com/news/detail-449014.html
总结
这几类抽样方法之间,直接->变换抽样、第一->第二->第三类舍选法都是推广的关系,同时推广的方式又彼此相似,理解清为什么以这样的顺序来介绍对更深入地理解知识很有帮助。另外,连续随机变量的抽样并未讲完,复合抽样法将放在下一篇分享。文章来源地址https://www.toymoban.com/news/detail-449014.html
到了这里,关于计算物理学复习笔记(一) 连续随机变量的抽样(直接、变换抽样,三类舍选法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!