ログコーシー乱数生成


10

密度のあるログコーシー分布から乱数を描く必要があります: 誰かが私を助けたり、私に方法を示すことができる本/紙を私に指摘したりできますか?

f(x;μ,σ)=1xπσ[1+(ln(x)μσ)2].

回答:


11

コーシー分布がある場合、変数にはログコーシー分布があります。したがって、コーシー確率変数を生成し、それらを累乗して、ログコーシー分布の何かを取得する必要があります。Xlog(X)

逆変換サンプリングを使用してコーシー分布から生成できます。つまり、ランダムなユニフォームを分布の逆CDFにプラグインすると、得られるものはその分布になります。場所がでスケールがのコーシー分布にはCDFがあります。μσ

F(x)=1πarctan(xμσ)+12

この関数を反転させてそれを見つけることは簡単です

F1(y)=μ+σtan[π(y12)]

したがって、場合、は、場所およびスケールコーシー分布があり、は、ログコーシー分布があります。いくつかのこの分布から生成するためのコード(使用せずに:))UUniform(0,1)μσEXPYY=μ+σtan[π(U12)]μσexp(Y)Rrcauchy

rlogcauchy <- function(n, mu, sigma)
{
    u = runif(n)
    x = mu + sigma*tan(pi*(u-.5))
    return( exp(x) ) 
}

注:コーシー分布は非常に長い裾を持っているため、コンピューター上で指数化すると、数値的に「無限」の値が得られる場合があります。それについてなすべきことが何かあるかどうかはわかりません。

また、log-cauchy変位値関数を直接使用して逆変換サンプリングを行うと、同じ問題が発生します。これは、計算を行った後、実際に同じ動作をすることになるためです-exp(μ+σtan[π(U12)])


1
これがマクロの+1です
マイケルR.チェリック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.