《概率入门》 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(逆变换法)

  1. 根据 U(0,1) 生成 U
  2. 返回 \(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),我们得出

\[X = F^{-1}(U)= \sqrt U, \quad 0 \leq u \leq 1 \]

因此,要从 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(离散分布的逆变换法)

  1. 生成 U~U(0,1)
  2. 找到满足 \(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}\) 显式存在,逆变换方法也不一定是最有效的随机变量生成方法。

posted @ 2025-01-03 11:40  李思默  阅读(661)  评论(0)    收藏  举报