《概率入门》 3.3 逆变换法(The Inverse-Transform Method)
在本节中,我们讨论根据特定分布生成一维随机变量的通用方法,即逆变换方法。
令 X 为具有 cdf F 的随机变量。由于 F 是非减函数,因此逆函数 \(F^{-1}\) 可定义为
$F^{-1}(y)=inf\{x:F(x) \geq y\}, 0 \leq y \leq 1$ (3.4)
(不熟悉 inf 概念的读者可以理解为 min。)很容易证明如果 U ∼ U(0, 1),那么
$X=F^{-1}(U)$ (3.5)
具有 cdf F。也就是说,因为 F 是可逆的并且 $\mathbb{P}(U \leq u) = u$,我们得出$\mathbb{P}(X \leq x)=\mathbb{P}(F^{-1}(U) \leq x)=\mathbb{P}(U \leq F(x))=F(X)$ (3.6)
因此,要生成具有 cdf F 的随机变量 X,请绘制 U ∼ U(0, 1) 并设置 $X=F^{-1}(U)$。图 3.1 说明了以下算法给出的逆变换方法。算法3.1(逆变换法)
- 根据 U(0,1) 生成 U
- 返回 \(X = F^{-1}(U)\)
图 3.1 逆变换法
示例 3.2 根据 pdf \(f(X)= \begin{cases} 2x, &0 \leq x \leq 1 \\ 0, &\text{其他} \end{cases}\) (3.7) 生成随机变量。
它的 cdf 为 \( F(x)= \begin{cases} 0, &x < 0 \\ \int_0^x 2x~dx=x^2, & 0 \leq x \leq 1 \\ 1, & x > 1 \end{cases} \),根据(3.5),我们得出
因此,要从 pdf (3.7) 生成随机变量 X,首先根据 U(0, 1) 生成随机变量 U,然后取其平方根。
示例 3.3(绘制离散分布) 设 X 为离散随机变量,其中 \(\mathbb{P}(X=x_i)=p_i,i=1,2,\cdots\),\(\sum_ip_i=1\)。X 的 cdf F 为\(F(x)=\sum_{i:x_i \leq x}p_i,i=1,2,\cdots\);参见图 3.2。
图 3.2 离散随机变量的逆变换法
因此,根据 F 生成随机变量的算法如下:
算法 3.2(离散分布的逆变换法)
- 生成 U~U(0,1)
- 找到满足 \(U \leq F(x_k)\) 的最小正整数 k,并返回 \(X = x_k\)。
在 matlab 中,绘制概率向量 (\(p_1,\cdots,p_n\)) 可以用一行完成:
min(find(cumsum(p)> rand));
这里 p 是概率向量,例如(1/3,1/3,1/3),cumsum 给出累积向量,例如(1/3,2/3,1),find 找到 \(p_i > r\) 这样的索引 i,其中 r 是某个随机数,min 取这些索引中的最小值。
算法 3.2 中的大部分执行时间都花在了步骤 2 的比较上。可以通过使用高效的搜索技术来减少该时间。
算法 3.2 中的大部分执行时间都花在了步骤 2 的比较上。可以通过使用高效的搜索技术来减少该时间。
一般来说,逆变换方法要求基础 cdf, F 以某种形式存在,可以通过分析或算法找到相应的反函数 \(F^{-1}\)。适用的分布有指数分布、均匀分布、威布尔分布(Weibull)、逻辑分布(logistic)和柯西分布(Cauchy)。不幸的是,对于许多其他概率分布,找到逆变换要么不可能,要么很难求解\(F(x)=\int_{-\infty}^x f(t)~dt=u\)的 x,即使 \(F^{-1}\) 显式存在,逆变换方法也不一定是最有效的随机变量生成方法。
浙公网安备 33010602011771号