实际应用中,所要面对的第一个问题就是如何抽样?
注意,在计算机模拟时,这里所说的抽样其实是指从一个概率分布中生成观察值(observations)的方法。而这个分布通常是由其概率密度函数来表示的。即使在已知PDF的情况下,让计算机自动生成观测值也不是一件容易的事情。从本质上来说,计算机只能实现对均匀分布的采样。幸运的是,仍然可以在此基础上对更为复杂的分布进行采样。
比较简单的一种情况是,可以通过PDF与CDF之间的关系,求出相应的CDF。或者根本就不知道PDF,但是知道CDF。此时就可以使用CDF反函数(及分位数函数)的方法来进行采样。这种方法又称为逆变换采样(Inverse Transform Sampling)。
假设已经得到了CDF的反函数 F -1 ( u ),如果想得到 m 个观察值,则重复下面的步骤 m 次:
(1)从 U (0,1)中随机生成一个值(计算机可以实现从均匀分布中采样),用 u 表示;
(2)计算 F -1 ( u )的值 x ,则 x 就是从目标分布 f ( x )中得出的一个采样点。
面对一个具有复杂表达式的函数,逆变换采样法真有效吗?
来看一个例子,假设现在希望从具有下面这个PDF的分布中采样
可以算得相应的CDF为
对于 u ∈[0,1],上述CDF的反函数为
下面在R中利用上面的方法采样10000个点,并以此来演示抽样的效果。
图3-5 逆变换采样举例
将所得结果与真实的PDF函数图形进行对照,如图3-5所示。可见由逆变换采样法得到的点所呈现处理的分布与目标分布非常吻合。