4

私はいくつかの統計コードに取り組んでおり、0 から 1 までの均一な浮動小数点値を生成する乱数ジェネレーターから始めて、ランダム分布からサンプルを作成するさまざまな方法を探っています。

十分に多数の独立した同一分布の一様確率変数を合計することにより、正規分布から近似サンプルを生成できることを知っています (中心極限定理により)。

ロジスティック分布からサンプルを作成するために同様のことを行うことは可能ですか? 法線になってしまうのを避けるために、追加するサンプルを加重または相関させる必要があると思います。

PSランダムサンプルを生成するより効率的な方法があるかもしれないことも認識しています。効率よりもそのようなジェネレーターがどのように機能するかを理解することに興味があるため、質問しています....

4

3 に答える 3

11

ロジスティック分布の逆関数を見つけるのは難しくないので、逆変換サンプリングを使用できます。基本的なアルゴリズムは次のとおりです。

for each random variate x ~ logistic
  generate a random variate y ~ Uniform(0, 1)
  x := F^-1 (y)

ここで、F^-1 は、ロジスティック分布または目的の分布の逆 CDF です。ほとんどのプログラミング言語では、ある種の rand 関数を使用して 0 と 1 の間の一様変量を生成できます。

ロジスティック分布から 1000 個の確率変量を生成する Python コードを次に示します。

from random import random
import math
import pylab

loc, scale = 0, 1

randvars = []
for i in range(1000):
    x = random()
    y = loc + scale * math.log(x / (1-x))
    randvars.append(y)

pylab.hist(randvars)
于 2010-10-18T00:17:36.737 に答える
6

関心のあるほとんどの分布で乱数を作成する非常に一般的な方法が 1 つあります。逆累積分布関数法です。

最初に、問題の分布の逆累積分布関数を生成します。累積分布関数は分布の領域の値を取り、それらを [0,1] にマッピングする関数であるため、逆累積分布関数は [0 ,1] を適切な確率で分布のドメインの値にマッピングします。多くの一般的な分布には、解析的に導出された逆累積分布関数がありますが、分布が扱いにくい場合や近似値である場合は、近似数値逆累積分布関数を作成できます。

次に、[0,1] に一様に分布する数値を生成する適切な乱数ジェネレーターを使用し、その出力を逆累積分布関数で実行します。出力は、開始したディストリビューションに従います。

ロジスティック分布の逆累積分布関数は、ここで見つけることができます。

于 2010-10-18T00:16:53.040 に答える