指数密度関数を持つ確率変数を生成したいと思います。
f(x) = e^x / (e - 1)、0 <= x <= 1
(e^-x) のような単純な関数の反転法を使用して、一様乱数ジェネレーターを使用できることを知っています。しかし、上記の関数でそれらを使用する方法がわかりません。
助言がありますか?
指数密度関数を持つ確率変数を生成したいと思います。
f(x) = e^x / (e - 1)、0 <= x <= 1
(e^-x) のような単純な関数の反転法を使用して、一様乱数ジェネレーターを使用できることを知っています。しかし、上記の関数でそれらを使用する方法がわかりません。
助言がありますか?
Wolfram Alphaによると、 から0
までの密度関数の積分は でa
あり(e^a-1)/(e-1)
、これは に反転しy=log((e-1)*x+1)
ます。したがって、逆変換メソッドは正常に機能するはずです。
積分がうまくいかない、または反転がうまくいかない、より一般的なケースでは、確率的サンプリング法は、確率密度が与えられた確率変数をサンプリングするための最も広く適用可能な方法です。理解して実装するのが最も簡単なのは、拒否サンプリングです。その後、Metropolis-Hastings を見ています。これは非常に強力ですが、頭を理解するのが必ずしも最も簡単というわけではありません。
f(x)
最初のステップは、から0
までを積分して累積分布関数x
を決定することです。この関数を呼び出します。(疑似) ランダムに数字を選んだら、それをこの関数に入れて、これを満たすものを見つけます。U
U
x
あなたの関数は、直接反転が機能するほど単純に見えます。より複雑な関数がある場合は、与えられたを解くためにニュートン ラフソン法を使用する必要があります。x
U