逆変換サンプリング(逆関数法)は,コンピュータで疑似乱数を生成する手法のひとつです.生成したい乱数の累積分布関数の逆関数の引数として一様乱数を与えることにより,その累積分布関数に従う乱数が生成します.
【スマホでの数式表示について】
逆変換サンプリング(逆関数法)とは
を
なる一様乱数とする.
このとき,全単射の累積分布関数
に従う乱数
は,
の逆関数
を用いて
(1) ![]()
によって生成することができる.
式(1)による乱数生成法を 逆変換サンプリング(Inverse transform sampling) あるいは 逆関数法 という.
逆変換サンプリング(逆関数法)の確率論的表現
後節において,逆変換サンプリングが成り立つことを示すために,その確率論的な表現を与えておこう.
このとき,
は,累積分布関数
に従う確率変数である.すなわち,
(2) ![]()
が成り立つ.
逆変換サンプリングが可能な累積分布関数の条件について,ここでは簡単のため,全単射条件を付加した.
また,乱数(random numbers) や 疑似乱数(pseudo-random numbers) と,確率変数(random variable) は,深い関連があるが区別されるべき概念であり,確率論において用いられるのは,もっぱら後者(確率変数)である.この区別に関する詳細については,別稿とする.
逆変換サンプリング(逆関数法)の証明
式(2)を示そう.確率論に基づいて証明するため,乱数ではなく,確率変数に関して議論する.
を,値の集合
上で定義された,全単射の累積分布関数
に従う確率変数であるとする.
(3) ![]()
であることに注意しておこう.また,全単射性より逆関数
が存在して,
(4) ![]()
である.さらに,累積分布関数およびその逆関数が単調増加関数であることから,
に対して
(5) ![]()
が成り立つ.
さて,
を,区間
上で定義された連続一様分布(continuous uniform distribution) に従う確率変数であるとする.すなわち,
(6) ![]()
である.
(7) ![]()
とできる.さらに式(5)により,上式は
(8) ![]()
となる.
さて,一般に,確率変数を引数とする関数の出力は確率変数となるので,
(9) ![]()
(10) ![]()
であるから,これと式(8)より,
(11) ![]()
が成り立つ.すなわち,逆関数
によって生成された
は,累積分布関数
に従う確率変数となっている.
(証明終わり)
逆変換サンプリング(逆関数法)の例:指数分布の場合
逆変換サンプリングによって,パラメータ
の指数分布に従う指数乱数を生成する方法を示す.
(12) ![]()
である.
として,逆関数
を求めよう.
(13) ![]()
(14) ![]()
を得る.すなわち,式(14)の
を 区間
で定義される連続一様乱数とすることにより,式(14)でパラメータ
の指数乱数を生成することができる.
なお,指数分布やその累積分布関数の詳細については,以下の記事を参照のこと.
逆関数が初等関数で表せない場合
累積分布関数の逆関数
が初等関数で表せない場合も多く,その際には分布関数ごとに適切に構成された乱数生成法を用いる必要がある.
正規乱数を発生させるBox-Muller法は,そのような方法のひとつである.


コメントを残す